簡體   English   中英

Kafka 3.3.1 Active/Active 消費者和生產者

[英]Kafka 3.3.1 Active/Active consumers and producers

我們有 2 個不同的 kafka 集群,每個集群有 10 個代理,每個集群都有自己的 Zookeeper 集群。 我們還設置了 MirrorMaker 2 以在集群之間同步數據。 對於 MM2,偏移量也與數據同步。

期待為我的消費者應用程序和生產者應用程序設置 Active/Active。

假設集群是 DC1 和 DC2。 主題名稱是 test-mm。

使用 MM2 設置,

In DC1,
  test-mm
  test-mm-DC2(Mirror of DC2)

In DC2,
  test-mm
  test-mm-DC1(Mirror of DC1)

消費者活躍/活躍

在 DC1中,我有一個應用程序使用消費者組名稱group1-test使用來自 test-mm 和 test-mm-DC2 的數據。

在 DC2中,同一個應用程序使用消費者組名稱group1-test使用來自 test-mm 和 test-mm-DC1 的數據。

應用程序在兩個 DC 上以主動/主動方式運行。

現在,DC1 中的生產者正在針對 DC1 中的主題 test-mm 進行生產,並且它被鏡像到 DC2 中的主題 test-mm-DC1。 我這里的假設是,偏移量是同步的,因此,使用相同的消費者組名稱,我們可以在兩個 DC 上運行消費者應用程序,並且只有一個消費者將獲取並處理消息。 另外,當DC1中的消費者應用程序宕機時,DC2中的消費者應用程序將開始處理,我們可以實現真正的消費者主動/主動。 這樣對嗎?

生產者活躍/活躍

DC1 中的生產者和 DC2 中的生產者 2 可能無法實現,因為序列可能無法由 2 個不同的生產者維護。 不確定生產者是否可以實現主動/主動。

您將需要兩個生產者,一個在 DC1 中生產 to test- test-mm ,另一個在 DC2 中生產 to test-mm 一旦消息被生成到 DC1 中的test-mm ,這將被復制到 DC2 中的test-mm-DC1 ,反之亦然。 這是實現主動/主動,因為數據將存在於兩個 DC 上,您的消費者也從兩個 DC 消費,如果一個 DC 發生故障,另一個生產者和消費者將照常繼續。 如果這沒有回答您的問題,請告訴我。

希望我的評論能回答您關於使用 MM2 進行一次處理的問題。 我鏈接的 Stack Overflow 帖子采用了 IBM 指南中的以下段落: https://ibm-cloud-architecture.github.io/refarch-eda/technology/kafka-mirrormaker/#record-duplication

這個Cloudera博客還提到exactly once處理不適用於多個集群: https://blog.cloudera.com/a-look-inside-kafka-mirrormaker-2/

跨集群 Exactly Once 保證

Kafka 支持 exactly-once 處理,但這種保證僅在給定的 Kafka 集群內提供,不適用於多個集群。 跨集群復制不能直接利用 Kafka 集群內的 exactly-once 支持。 這意味着 MM2 在跨源集群和目標集群復制數據時只能提供至少一次語義,這意味着下游可能存在重復記錄。

現在關於以下問題:

現在,DC1 中的生產者正在針對 DC1 中的主題 test-mm 進行生產,並且它被鏡像到 DC2 中的主題 test-mm-DC1。 我這里的假設是,偏移量是同步的,因此,使用相同的消費者組名稱,我們可以在兩個 DC 上運行消費者應用程序,並且只有一個消費者將獲取並處理消息。 另外,當DC1中的消費者應用程序宕機時,DC2中的消費者應用程序將開始處理,我們可以實現真正的消費者主動/主動。 這樣對嗎?

在這里看到這篇文章,他們問了一個類似的問題: How are consumers setup in Active - Active Kafka setup

我之前沒有在主動/主動架構中配置 MM2,因此無法確認您是否會為每個 DC 或一個 DC 配備兩個主動消費者。 希望其他成員能夠為您回答這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM