下面的解决方案提到这里Kafka镜子制造商未能复制消费者抵消主题。我能够在dc1(livekafka集群)和dc2(backupkafka集群)集群中无任何错误地启动mirror maker。
看起来它也可以同步 __consumer_offsets
主题跨dc2集群形成dc1集群。
问题
如果我关闭dc1的consumer并将同一个consumer(同一个group\u id)指向dc2,它将再次读取相同的消息,即使mirror maker能够同步此主题和分区的偏移量。
我可以看到日志结束偏移量显示正确,但当前偏移量仍然指向导致延迟的旧偏移量。
例子
mirror maker仍在dc2中运行。
用电设备在dc1中关闭前
//DC1 __consumer_offsets topic
+-----------------------------------------------------------------+
| TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG |
+-----------------------------------------------------------------+
| gs.suraj.test.1 0 10626 10626 0 |
| gs.suraj.test.1 2 10619 10619 0 |
| gs.suraj.test.1 1 10598 10598 0 |
+-----------------------------------------------------------------+
停止dc1中的耗电元件
dc2中耗电元件启动前
//DC2 __consumer_offsets topic
+-----------------------------------------------------------------+
| TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG |
+-----------------------------------------------------------------+
| gs.suraj.test.1 0 9098 10614 1516 |
| gs.suraj.test.1 2 9098 10614 1516 |
| gs.suraj.test.1 1 9098 10615 1517 |
+-----------------------------------------------------------------+
由于这个延迟,当我在中启动dc2中的同一个consumer时,它会再次读取4549条消息,这不应该发生,因为它已经在dc1中读取了一个committed,而mirror maker已经同步了 __consumer_offsets
主题从dc1到dc2
如果我漏了什么请告诉我。
1条答案
按热度按时间xn1cxnb41#
如果您使用的是mirror maker 2.0,他们会明确地说,不支持只支持一次:
https://cwiki.apache.org/confluence/display/kafka/kip-382%3a+mirrormaker+2.0#kip-382:mirrormaker2.0-动机
但他们打算在将来这样做。