簡體   English   中英

Kafka消費者同步行為

[英]Kafka consumer synchronization behavior

我目前正在探索kafka作為一個簡單問題的初學者。

將有一個Producer將消息推送到一個主題,但是會有n個來自kafka的消費者按摩來自kafka的數據並插入到數據庫中(每個消費者插入到不同的表中)。

消費者是否有可能會失去同步(比如消費者的某些部分會停頓一段時間),那么一個或多個消費者將不會處理消息並插入表格?

假設代碼始終正確,則在按摩數據時不會出現異常。 每條消息只處理一次非常重要。

我的問題是Kafka是否為我們處理這部分內容,或者我們是否必須編寫其他代碼以確保不會發生這種情況。

您可以對使用者進行分組(請參閱group.id配置),並且分組的使用者可以將主題的分區分開。 一旦消費者下降,該組中的另一個消費者將接管被刪除的分區讀取的分區。

但是,可能存在一些問題:當消費者讀取分區時,它會向Kafka提交偏移量,如果消費者在處理收到的數據之后但在提交偏移量之前丟失,則其他消費者將從最新的可用偏移開始讀取。 幸運的是,您可以管理如何提交偏移的策略(請參閱使用者的設置enable.auto.commitauto.offset.reset等)

Kafka和Spark Streaming指南提供了一些解釋以及如何管理偏移的可能策略。

根據設計,Kafka將生產者與消費者分離。 消費者將盡可能快地閱讀 - 消費者可以盡可能快地生產。

消費者可以組織成“消費者群體”,您可以對其進行設置,以便多個消費者可以從單個群組中進行閱讀並進行設置,以便個人消費者從其自己的群組中進行閱讀。

如果您有1個消費者對1個組(取決於您的確認策略)應該能夠確保每個消息只讀一次(每個消費者)。

否則,如果您希望從單個組中讀取多個消費者 - 同樣的事情 - 但消息由n個消費者中的一個讀取一次。

暫無
暫無

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

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