核心观点与关键数据
Apache BookKeeper 简介
- 诞生场景:为解决 Twitter 和 Salesforce 等公司大规模消息存储需求而设计,支持 Search、Ads、Stream computing、EventBus 等场景。
- 使用案例:Twitter 使用 1500+ Bookies 存储每日 17PB 数据和 1.5 万亿记录/秒;Salesforce 将 BookKeeper 作为 Amazon Aurora 的存储方案。
Apache BookKeeper 的基本概念
- 核心组件:Entry(条目)、Ledger(账本)和 Log(日志)。
- 节点对等架构:通过 Ensemble(集合)控制读写带宽,Write Quorum(写副本数量)和 Ack Quorum(确认数量)保障一致性与性能。
高可用性与一致性
- 读写高可用性:通过 Ensemble Change 最大化数据放置,Speculative Reads 减少长尾时延。
- 一致性机制:支持 LastAddPushed、LastAddConfirmed 和 Fencing 避免脑裂。
- IO 读写隔离:优化读写性能,减少冲突。
存储介质的演进
- Journal Disk 演进:从传统磁盘向 PMEM(持久内存)演进,显著提升性能。
- Verizon Media 案例:使用 PMEM 作为 Journal Disk 将 Pulsar 吞吐量提升 5 倍,同时降低成本和集群规模。
- 成本对比:Pulsar 集群成本为 Kafka 的 50%,Broker 节点成本为 Kafka 的 1/4。
- 性能对比:Pulsar 低延迟写入(<5ms)和更高吞吐量。
社区资源
- StreamNative 介绍:提供 Pulsar 和 BookKeeper 的企业级服务,支持多种社区资源。
- 资源链接:
- 微信公众号:ApachePulsar / StreamNative
- B站:BookKeeper 原理详解视频
- 邮件列表:dev@pulsar.apache.org / users@pulsar.apache.org
- Slack:Apache-Pulsar (#china)
- GitHub:pulsar.apache.org / bookkeeper.apache.org / streamnative
研究结论
Apache BookKeeper 作为 Pulsar 的核心存储引擎,通过节点对等架构、灵活的一致性配置和存储介质演进(如 PMEM),实现了高吞吐、低延迟和高可用性,适用于大规模消息存储场景。StreamNative 则提供企业级支持,进一步推动 Pulsar 和 BookKeeper 的应用落地。