2016-08-18 29 views
3

我有一個部署,我們正在使用kafka從服務發送消息。但是我們需要在所有地區都有卡夫卡大師。所以一旦消息被推送到1個數據中心,它應該在其他地方同步。當它再次在其他數據中心完成時,它應該同步回來。 Mirror Maker可以提供從1到其他的同步,但是如何實現雙向同步?** Kafka **跨區域數據中心之間的雙向同步

回答

2

Master-Master類型的複製在Kafka中可用,Kafka MirrorMaker只能朝一個方向反射。

爲什麼?
Kafka MirrorMaker基本上是生產者和消費者將事件從一個DC轉移到另一個DC的組合,在此過程中,鏡像主題的偏移量將與源羣集中的偏移量不同。現在,如果我們希望雙向將不得不跟蹤一端產生的消息,如果不在所有消費者和製作者中調整太多,這很難(不值得)。 無法運行make mirrormaker在Kafka中執行master-master類型的複製,它只會以循環結束。

如果您想要達到您的要求,您可能需要保留數據中心特定的主題並將它們聚合爲主題。

假設你想從DC1和DC2中產生消息給topicA。

  • 讓DC1中的topicA-DC1和DC2中的topicA-DC2。在DC1和DC2中都有主題topicA。

  • 您的mirromaker應該擁有來自topicA-DC1和topicA-DC2的聚合消息,以便在兩個數據中心內掌握主題topicA。

+0

感謝您的解釋。我現在也覺得,應該在主設備和從設備上運行多個鏡像製造商來維護相同的數據。 –

1

我懷疑的原因是MirrorMaker一個方向是爲了避免「迴路」同一事件的從站點A被讀入站點B然後再在B同步的回A.

如果你看看this blog post(特別是「層級和聚合」)解決方案是擁有「本地」和「聚合」主題,您可以使用MM從本地主題讀取遠程聚合主題

+0

提到的解決方案將工作,但它將加起來的服務器數量。比方說,我們必須限制運行kafka的服務器的數量,是否有辦法在兩個數據中心上運行鏡像並同步? –