Apache Pulsar 中的主题复制
Posted
技术标签:
【中文标题】Apache Pulsar 中的主题复制【英文标题】:Topic replication in Apache Pulsar 【发布时间】:2019-08-04 10:52:03 【问题描述】:replication in Pulsar 上的文档描述性不是很强。 我想知道复制是如何详细工作的,以及persistence policies for a namespace 如何发挥作用。文档讨论了这些参数
bookkeeper-ack-quorom
: 等待每个入口的ack数(保证副本)
bookkeeper-ensemble
: 用于主题的 bookie 数量
bookkeeper-write-quorum
: 每个条目要写多少次
bookkeeper-ack-quorom
是否意味着,在这个数量的 bookie 将条目写入磁盘之前,对客户端的 ack 会延迟?
bookkeeper-ensemble
和 bookkeeper-write-quorum
有什么区别?
假设我有 3 个 bookie,我希望命名空间中的主题驻留在每个 bookie 上,然后我将两个值都设置为 3
?
【问题讨论】:
似乎每次重新加载时网址的锚点都会更改,因此链接不会链接到直接部分。对此感到抱歉。 【参考方案1】:bookkeeper-ack-quorom 是否意味着延迟到客户端的确认,直到这个数量的 bookie 将条目写入磁盘?
没错。如果您的 ack-quorum 为 2,则意味着当发布成功时您将拥有 2 个保证的消息副本。 在默认配置中,这意味着将消息写入磁盘并刷新(fsynced)到 2 台机器上的磁盘。
bookkeeper-ensemble 和 bookkeeper-write-quorum 有什么区别?
Ensemble 是用于账本的 bookie 的数量。大多数情况下,这被配置为等于写入仲裁。
设置 ensemble > write-quorum
将启用“在单个主题内跨多个 bookie 的条目条带化。
例如,设置e=5
w=2
a=2
将使:
基本上,它允许在不放松排序的情况下为单个分类帐扩展 IO。
假设我有 3 个 bookie,我希望命名空间中的主题驻留在每个 bookie 上,然后我将两个值都设置为 3?
正确。尽管ensemble
也代表了为了接受写入而需要可用的最小 bookies 集。
如果你有 3 个 bookie 并设置 ensemble=3
,你将无法容忍节点故障。
【讨论】:
关于你最后的陈述,因为ensemble > write-quorum
案例只是一个(非常感谢!)衡量更高性能的方法,理论上 Pulsar 是否仍然可以允许写入,只要节点数至少等于写入仲裁?这样我们就可以实现可用性和性能的最佳组合。
实际上,当前的行为是至少需要“ensemble”节点才能启动,尽管可以改进为只需要“write-quorum”节点。以上是关于Apache Pulsar 中的主题复制的主要内容,如果未能解决你的问题,请参考以下文章