Apache Pulsar 分层存储帮你省钱

原作者:Jesse Anderson
翻译:StreamNative-Sijia

企业在考虑部署实时消息系统时,总体硬件成本是很重要的。通过预先规划,企业可以节省高达 85% 的总体存储成本。

在比较存储成本之前,我先简要介绍一下 Apache Kafka 和 Apache Pulsar 如何存储数据,它们之间有何差异,以及为什么这些差异很重要。

Kafka 中的数据存储

图 1 Kafka 存储简图

在 Kafka 中,Broker 进程负责移动并存储数据。Producer 将数据发送到 Broker 进程中。当 Consumer 轮询数据时,从 Broker 中检索数据。Broker 进程接收到数据时,会将数据存储在单独的本地目录中。

Kafka 集群支持同时运行多个不同的 Broker 进程,而每个 Broker 进程分别运行在物理上独立的计算机或容器上。

Pulsar 中的数据存储

可以通过几种不同的方式建立 Pulsar 集群。这种可扩展性正是优化存储成本的方式。

简单的 Pulsar 设置

图 2 Pulsar 存储简图

在 Pulsar 中,Broker 进程负责移动数据。Producer 将数据发送到 Broker 进程中。当 Consumer 推送数据时,数据来自 Broker。当 Broker 接收到数据时,会将数据存储在一个共置的 BookKeeper Bookie(BookKeeper 中存储数据的进程)中。

Pulsar 集群支持同时运行多个不同的 Broker 进程,而每个 Broker 进程分别运行在物理上独立的计算机或容器上。

具有独立 BookKeeper 集群的 Pulsar

图 3 Pulsar 与独立的 BookKeeper 集群

如图所示,Pulsar Broker 不直接存储数据,而是使用 Apache BookKeeper 来存储数据。数据发送/接收和存储的解耦使得 BookKeeper 可以在物理上独立的计算机或容器上运行。

在 Broker 保存消息时,只会将消息发送到 BookKeeper 进程中。这使 BookKeeper 集群和 Pulsar 集群可以相互独立地扩展。如果需要收发大量消息但只存储较短时间,则可以配置很多 Broker 和较少的 Bookie 节点;相反,如果收发消息速度慢但需要长时间存储,则可以配置少量的 Broker 和较多的 Bookie。

一个常见的问题是,将 Broker 和 Bookie 放在不同的计算机上是否会影响性能。Broker 会在内存中保留最新消息的缓存。但实际上,99.9% 的消息是缓存命中,因为大多数 consumer 只接收最新的消息。

卸载数据到 S3

图 4 Pulsar 与卸载数据到 S3 的独立 BookKeeper 集群

Pulsar 的解耦存储架构确实是 Pulsar 的一个新特点,即分层存储。BookKeeper 可以根据管理员配置的策略自动将存储在 Bookie 上的数据移动存储到 S3 中。

注意: 虽然我建议卸载数据到 S3,但这并不是唯一的选择。S3 支持 Google Cloud Storage,并且将会支持 Azure Blob Storage,因此可以将 S3 看作你将会选择的云存储的简称。

虽然数据存储在 S3 中,但是由于 Bookie 负责数据移动,Broker 仍然可以访问 S3 中的数据。另外,S3 的 IO 比本地存储的数据慢。

存储的主要区别

在存储方面,Kafka 和 Pulsar 的主要区别在于是否耦合。在 Kafka 中,存储耦合到 Broker 中;在 Pulsar 中,存储与 BookKeeper 分离。

图 5 Kafka 卸载

Kafka 确实能够将数据存储在 S3 中,可以通过手动设置 Kafka Connect 或编写自定义 Consumer 来实现。

图 6 Kafka 访问

图 6 展示了卸载数据到 S3 的注意事项。一旦数据卸载到 S3,就不能再通过 Kafka API 进行访问。必须使用支持 S3 的另一个计算引擎对数据进行后续处理或使用,否则需要将数据重新流回 Kafka 主题,再进行处理。

图 7 Pulsar 访问

使用 Pulsar 就可以与计算引擎共享数据,也就是说,Broker 和计算引擎都可以访问旧数据。

例如,Spark 可以处理 S3 中的旧消息,同时,Pulsar Consumer 能够请求这些旧消息。请注意,在其他计算引擎中读取 Pulsar 数据需要一种自定义输入格式,这种格式可以理解 Pulsar 的磁盘格式。在撰写本文时,Pulsar 支持用于 Spark、Flink 和 Presto 的连接器。

计算成本

我们已经分别介绍了 Kafka 和 Pulsar 如何存储数据,接下来可以开始计算成本了。为了使计算简单而具体,我们将采用 Amazon Web Service 2019 年 1 月在美国东部(俄亥俄州)地区的定价。S3 每 GB 每月的费用为 0.023 美元,Amazon EBS 通用 SSD 预配置存储每 GB 每月费用为 0.10 美元。

在这种情况下,假设每天存储 500 GB 的消息,需要存储 14 天,大约有 7000 GB 的原始事件消息。在 Kafka 和 Pulsar 中,为提高可用性,数据以三副本形式保存,这就需要 21,000 GB 的存储空间。不考虑 S3,Kafka 和 Pulsar 仅存储每年就要花费 25200 美元。

使用 Pulsar 和 S3,就不需要在 BookKeeper 上存储 14 天,可以只在 Pulsar 上存储 1 天,另外 13 天存储在 S3 上(大部分情况下,使用几分钟前的数据)。也就是说,需要 1,500 GB 的 EBS(500 GB x 3 份副本)和 6,500 GB 的 S3(S3 不直接对冗余收费)。EBS 每年的费用为 1,794 美元,S3 每年 1,800 美元,总共为 3,594 美元。显然,S3 请求的成本没有包含在内,但每年的费用应该在 50-300 美元之间。

在不损失数据可用性的条件下,这两种选择的费用相差了 85.7%。为了估算成本差异,我做了一个 Pulsar_Storage_Savings 文件。在表格中输入数据,就可以看到价格差异。

关于费用的补充

对于云用户而言,S3 中数据的归档存储已经纳入预算,这样可以节省费用。

还有一些更便宜的 S3 层,SLAs 更低,价格也更低,例如:Glacier。选用 Glacier,S3 每 GB 每月的费用将从 0.023 美元降至 0.004 美元。

可以根据用例和集群需要,选择合适数量的 Pulsar Brokers 与 BookKeeper Bookie 节点来优化成本。EC2 成本通常要比存储成本高得多。

了解 Kafka 和 Pulsar 在存储上的差异,的确可以优化存储支出。在灵活地交付业务所需的内容的同时,还可以降低 IT 开销。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,639评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,093评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,079评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,329评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,343评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,047评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,645评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,565评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,095评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,201评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,338评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,014评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,701评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,194评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,320评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,685评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,345评论 2 358