pulsar 复制的订阅 测试

心已入冬 提交于 2020-08-06 04:59:56

官方pip

https://github.com/apache/pulsar/wiki/PIP-33%3A-Replicated-subscriptions

测试场景:

集群:sh集群,bj集群

版本:2.5.2

sh集群生产100条消息,sh集群没秒钟消费1条消息,然后观察 Mark Delete Position ,read position的变化。

结论:大约再35条消息时候bj集群的 Mark Delete Position ,read position会更新,推测是消息消费35样子会触发一次同步订阅

疑问:官方说的是1秒钟同步一次,但是测试不是这样的。

 

 

疑问2:geo就是一个生产者发往远端集群,当没生产者的时候,为什么这里还是一直再增加?

replicated subscription 的 pip 里面有说明,他是依赖消息传递来同步 subscription state 的

pip实现描述:

拟议的解决方案

地理复制的Pulsar主题可以看作是部分有序日志的集合。

由于生产者可以在每个区域上发布消息,因此每个区域最终可能会有一系列不同于其他区域的消息,尽管来自一个特定区域的消息将始终按顺序存储。

主要思想是创建一致的分布式快照,以建立来自不同群集的消息ID之间的关联。

消息ID的快照将以以下方式构造:

  • 对于给定的消息M1-a(写入或复制到region a
  • 我们有一组来自其他地区的关联消息ID,例如。M3-b 和M1-c
  • 当使用者确认所有消息<=时M1-a,这意味着它也已接收(并确认)b消息ID <=的M3-b区域中的所有消息c 以及消息ID <=的区域中的所有消息M1-c
  • 这样,当给定订阅的“标记删除”位置(光标指针)移过M1-a区域中的消息时a,代理将能够指示b和的代理cM3-b和分别更新订阅M1-c

这些快照将作为“标记”消息存储在主题本身中,在将消息分发给使用者之前,它们将被代理过滤掉。

同样,快照本身将通过使“标记”消息内联地流过复制通道来创建。

https://github.com/apache/pulsar/wiki/PIP-33%3A-Replicated-subscriptions

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!