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-ensemblebookkeeper-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 将使:

每条消息都写成 2 个副本,我们等待 2 个确认 消息在 5 个 bookie 中循环显示 每个 bookie 都会有一个消息子集 2/5 每个 bookie 的写入/读取流量很小

基本上,它允许在不放松排序的情况下为单个分类帐扩展 IO。

假设我有 3 个 bookie,我希望命名空间中的主题驻留在每个 bookie 上,然后我将两个值都设置为 3?

正确。尽管ensemble 也代表了为了接受写入而需要可用的最小 bookies 集。

如果你有 3 个 bookie 并设置 ensemble=3,你将无法容忍节点故障。

【讨论】:

关于你最后的陈述,因为 ensemble > write-quorum 案例只是一个(非常感谢!)衡量更高性能的方法,理论上 Pulsar 是否仍然可以允许写入,只要节点数至少等于写入仲裁?这样我们就可以实现可用性和性能的最佳组合。 实际上,当前的行为是至少需要“ensemble”节点才能启动,尽管可以改进为只需要“write-quorum”节点。

以上是关于Apache Pulsar 中的主题复制的主要内容,如果未能解决你的问题,请参考以下文章

KoP 姝e紡寮€婧愶細鍦?Apache Pulsar 涓婃敮鎸佸師鐢?Kafka 鍗忚

在 Apache Pulsar 中使用注册模式发布到主题

从 apache pulsar 主题中检索所有过去的消息

Apache-Pulsar 吞吐量

自动恢复在 Apache Pulsar 中做了啥?

你不得不知道的 Apache Pulsar 三大跨地域复制解决方案