Pulsar是否支持将多份BookKeeper副本存储在不同集群中
跨多数据中心强一致副本存储方案
你描述的场景可以通过Pulsar底层依赖的BookKeeper的区域感知强制副本放置策略原生实现,不需要额外开发,也不用依赖Pulsar异步跨集群复制能力(异步复制无法满足强一致性要求)。核心思路是将三个数据中心的所有bookie节点纳入同一个BookKeeper集群统一管理,通过策略强制每个segment的副本分布在不同数据中心。
具体配置步骤
- 给每个数据中心的bookie节点配置所属区域标识,修改所有bookie节点的
bookkeeper.conf文件:# 按节点所在数据中心替换为dc1、dc2、dc3即可 group=dc1 - 配置副本放置策略,在所有broker节点的
broker.conf以及bookie节点的bookkeeper.conf中添加以下配置:ensemblePlacementPolicy=org.apache.bookkeeper.client.EnforcedRegionEnsemblePlacementPolicy # 配置所有可用的数据中心列表 enforcedRegionEnsemblePlacementPolicy.regions=dc1,dc2,dc3 # 要求副本至少分布在3个区域才能满足 durability 要求 enforcedRegionEnsemblePlacementPolicy.minRegionsForDurability=3 # 每个区域仅存1份副本 enforcedRegionEnsemblePlacementPolicy.replicasPerRegion=1 - 配置业务命名空间的持久化策略,匹配3副本要求:
强一致场景下pulsar-admin namespaces set-persistence \ --ensemble-size 3 \ --write-quorum-size 3 \ --ack-quorum-size 3 \ 你的租户名称/你的命名空间名称ack-quorum-size需要设置为3,写入请求会等待三个数据中心的副本全部落盘后才返回成功,完全满足你要求的强一致特性。
落地注意事项
- 该方案的写入延迟取决于三个数据中心之间的网络RTT,需要提前评估跨DC网络质量是否符合业务的延迟要求。
- 若单个数据中心完全故障,可临时将
minRegionsForDurability调整为2保证业务可用性,等故障数据中心恢复后再将配置改回3即可。 - 该方案和Pulsar的异步跨集群复制特性是完全独立的,异步跨集群复制仅适用于多活集群间的最终一致数据同步,不满足你的强一致场景需求。
内容的提问来源于stack exchange,提问作者dashenswen
相关产品推荐
相关产品推荐

