beehiiv 是一个新闻通讯平台,帮助创作者、出版商和企业建立和发展其电子邮件受众。 该平台由三位 Morning Brew 工程师于 2022 年创立,提供创建、发送和盈利新闻通讯的工具,每月发送数十亿封电子邮件,并向创作者支付数百万美元。
beehiiv 成功背后的关键是其复杂的**数据基础设施**,这使它能够个性化内容、跟踪用户参与度并优化性能。 随着平台规模的扩大,实时处理海量数据至关重要,为创作者提供实时洞察,帮助他们做出明智的决策。
“在新闻通讯领域,我们生成大量电子邮件数据,”beehiiv 数据基础设施和工程主管 Eric Abis 说。“每次处理电子邮件,每次电子邮件到达收件箱,每次电子邮件被延迟,每次电子邮件被退回,每次你打开它,每次你点击链接——所有这些都会积累到数百万甚至数十亿次事件。”
Eric 于 2023 年 8 月加入 beehiiv。在最近的一次 纽约市聚会上,他分享了团队如何将 beehiiv 的数据运营从 Postgres 迁移到 ClickHouse Cloud,从而大幅提高效率、可扩展性和整体系统可靠性。
热闹的开端
2020 年,Tyler Denk、Ben Hargett 和 Jake Hurd 在一家名为 Morning Brew 的每日商业新闻通讯公司担任工程师。 随着公司规模的扩大,他们看到其他新闻通讯运营商在实现类似成功方面遇到了困难。 他们问自己:“我们如何利用我们已经构建的东西,让任何人都可以创建自己的新闻通讯并从中获利?”
他们使用 Ruby on Rails(他们非常熟悉的框架)编写了最初的 beehiiv 产品。 他们最初的数据库管理系统(他们称之为 Honeycomb)运行在 Postgres 上,使用 Ruby 队列系统,为应用内分析和内部仪表板提供支持。 最初,他们专注于为初创公司提供资金,并证明他们拥有可行的业务。
“创始团队创造了巨大的工程奇迹,将系统扩展到每周处理数亿次事件,”Eric 说。
然而,随着平台的增长,系统的局限性变得越来越明显。 Postgres 虽然最初很有效,但在不断增长的数据需求面前苦苦挣扎,导致偶尔出现性能问题,并需要更多工程资源。 团队意识到,为了继续发展并确保一流的用户体验,他们需要一个更可扩展的解决方案。
选择 ClickHouse
当 Eric 于 2023 年加入 beehiiv 时,他提出了一种全新的数据基础设施。 他设想了一个高度可扩展、快速且能够处理实时分析而无需繁琐的作业队列或批处理的系统。 弹性也是关键;新系统必须具有容错性、灾难恢复能力和安全性。 他的更大目标是转向基于微服务的架构和事件驱动的框架,在公司发展过程中提供更大的灵活性。
“目标是从头开始构建一个新系统,不仅扩展 beehiiv 的数据平台,而且理想情况下扩展整个业务,”Eric 说。
Eric 决定从 OLTP(联机事务处理)系统迁移到 OLAP(联机分析处理)系统。 虽然像 Postgres 这样的 OLTP 数据库非常适合管理具有高一致性和快速更新的事务数据,但它们难以处理分析所需的大量复杂查询。 另一方面,OLAP 系统专为速度和可扩展性而设计,非常适合 beehiiv 的需求。
ClickHouse Cloud 凭借其无与伦比的 OLAP 数据库性能,成为最佳选择。 由于其列式存储格式和实时分析能力,它能够以闪电般的速度处理数十亿行数据。 自动物化聚合的能力也消除了对批处理的需求。 此外,作为具有不断增长的集成生态系统的开源产品,ClickHouse 提供了灵活性,可以随着 beehiiv 的不断发展和演变而支持其发展。
新的架构
在 beehiiv 的新设置中,数据平台是围绕一个分布式、基于微服务的架构构建的,该架构专注于可扩展性和效率。 它的核心是 Kafka,一个分布式流式平台,用于实时管理数据流。 数据被导入到 Kafka 中,进行处理,然后流式传输到 ClickHouse Cloud 以进行存储和分析。 这种方法将数据导入与处理分离,从而能够顺利处理大容量事件流,而不会出现瓶颈。
ClickHouse 是 beehiiv 数据处理和分析的支柱。 作为 OLAP 数据库,它旨在处理 beehiiv 数百万用户和订阅者生成的海量数据。 通过将数据流经 Kafka 后迁移到 ClickHouse,beehiiv 确保其分析不仅能够实时提供,而且还具有高度可扩展性,从而支持平台的增长。
在纽约聚会上的演讲中,Eric 强调了团队在新架构中使用的几个 ClickHouse 功能。 它们包括:
ReplacingMergeTree 表引擎
此功能通过允许幂等性来确保数据完整性,这意味着可以多次插入同一行而不会创建重复项。 这在处理来自多个来源的数据或重播事件时非常重要,因为它可以防止数据重复。
字典
它们使将元数据加入大型事实表变得瞬时,从而允许快速物化列。“如果没有字典,每次插入原始电子邮件数据表都将需要一个联接查询,从而减慢处理速度,”Eric 说。
临时的列
此功能允许 beehiiv 计算用于其他物化列的值,而无需永久存储计算数据。 对于管理不需要长期保存但对于某些计算必不可少的中间数据来说,这很有效。
物化视图
beehiiv 使用物化视图在具有不同排序键的“影子表”中存储预聚合数据,从而优化系统以针对特定类型的查询。 这种方法可以提高查询性能,从而实现更快的分析和洞察。
窗口函数
Eric 说新系统“严重依赖”窗口函数来为各种分析提供支持。 这些函数允许平台跨数据集执行复杂的计算。
甜蜜的成功
从 Postgres 迁移到 ClickHouse 为 beehiiv 的整个组织带来了改进。工程师们过去常常花费大量时间来处理可扩展性问题和管理数据可用性,现在他们可以专注于真正的工程工作,例如构建新功能。这一变化也激发了新的想法和创新,使团队能够从容地思考系统设计,而不会受到数据限制的束缚。
对于业务领导者和产品经理来说,影响是巨大的。他们现在可以直接访问原始数据,并且可以生成自己的指标,而无需依赖工程师。这种转变为高级分析打开了大门,这些分析可以通过 Web 应用程序、仪表板和 API 传递给最终用户。它也为未来的机器学习计划奠定了基础,例如欺诈检测、垃圾邮件过滤和广告网络优化。
用户也直接看到了好处。与旧系统不同,旧系统中经常出现几个小时的延迟,而如今的用户可以在几秒钟内发送电子邮件群发和查看性能数据。“这真是太棒了,”埃里克说。
总体而言,ClickHouse 被证明“快得离谱”,埃里克说。尽管在原始数据上运行了许多查询,但中位数查询时间仅为 22 毫秒,平均查询时间为 85 毫秒(埃里克表示,这个数字受到少数大型用户和繁重查询的影响,团队目前正在对其进行优化)。
在埃里克演示时,该系统在六个月内存储了超过 330 亿个原始事件,总计 1.5 TiB 的压缩数据(未压缩为 13 TiB)。与 Postgres 相比,Postgres 甚至无法存储原始数据,新系统的容量已不在一个级别,使 beehiiv 能以以前从未有过的方式进行扩展和创新。
展望未来
beehiiv 向 ClickHouse Cloud 的过渡标志着一个巨大的转变,使该公司能够高效地管理和利用海量数据。新的架构不仅解决了以往的可扩展性问题,而且使整个组织能够进行创新和发展,而不受技术限制的束缚。
以 ClickHouse 为核心数据基础设施,埃里克和他的团队可以提供实时分析,改善用户体验,并展望实施更多新功能。随着平台的发展,beehiiv 处于引领新闻简报行业的有力地位,为创作者提供构建和变现其电子邮件受众所需的工具。