Apache Kafka -2 工作流程

原文地址: http://blogxinxiucan.sh1.newtouch.com/2017/07/12/Apache-Kafka-工作流程/

http://blogxinxiucan.sh1.newtouch.com

Apache Kafka教程 之 Apache Kafka -工作流程

Apache Kafka - 工作流程

kafka只是一個分為一個或多個分區(qū)的主題集合。kafka分區(qū)是線性有序的消息序列,其中每個消息由其索引(稱為偏移量)標(biāo)識。Kafka群集中的所有數(shù)據(jù)都是分區(qū)的不連貫的并集。傳入的消息被寫在分區(qū)的末尾,消息被消費(fèi)者依次讀取。通過將消息復(fù)制到不同的經(jīng)紀(jì)人來提供耐久性。

Kafka以快速,可靠,持久,容錯和零停機(jī)的方式提供基于pub-sub和隊(duì)列的消息傳遞系統(tǒng)。在這兩種情況下,生產(chǎn)者只需將消息發(fā)送到主題,消費(fèi)者可以根據(jù)需要選擇任何一種消息系統(tǒng)。讓我們按照下一節(jié)中的步驟來了解消費(fèi)者如何選擇他們選擇的消息系統(tǒng)。

Pub-Sub消息傳遞工作流程

以下是Pub-Sub Messaging的逐步工作流程 -

  • 生產(chǎn)者定期向主題發(fā)送消息。
  • Kafka代理將所有郵件存儲在為該特定主題配置的分區(qū)中。它確保消息在分區(qū)之間平等共享。如果生產(chǎn)者發(fā)送兩個消息,并且有兩個分區(qū),則Kafka將在第一個分區(qū)中存儲一個消息,在第二個分區(qū)中存儲第二個消息。
  • 消費(fèi)者訂閱一個特定的主題。
  • 一旦消費(fèi)者訂閱了一個話題,Kafka將向消費(fèi)者提供該主題的當(dāng)前偏移量,并將偏移量保存在Zookeeper系列中。
  • 消費(fèi)者將定期請求Kafka(如100 Ms)新消息。
  • 一旦Kafka收到來自生產(chǎn)者的消息,它會將這些消息轉(zhuǎn)發(fā)給消費(fèi)者。
  • 消費(fèi)者將收到消息并處理它。
  • 一旦消息被處理,消費(fèi)者將向Kafka經(jīng)紀(jì)人發(fā)送確認(rèn)。
  • 一旦Kafka收到確認(rèn),它會將偏移量更改為新值,并在Zookeeper中進(jìn)行更新。由于Zookeeper中保留了偏移量,因此即使在服務(wù)器出現(xiàn)故障時,消費(fèi)者也可以正確讀取下一條消息。
  • 上述流程將重復(fù),直到消費(fèi)者停止請求。
  • 消費(fèi)者可以隨時快退/跳到主題的偏移量,并閱讀所有后續(xù)消息。

隊(duì)列消息/消費(fèi)群組工作流程

在隊(duì)列消息傳遞系統(tǒng)中,而不是單個消費(fèi)者,具有相同組ID的消費(fèi)者組將訂閱主題。簡單來說,訂閱具有相同組ID的主題的消費(fèi)者被認(rèn)為是單個組,并且消息在它們之間共享。我們來看一下這個系統(tǒng)的實(shí)際工作流程。

  • 生產(chǎn)者定期向主題發(fā)送消息。
  • Kafka將所有郵件存儲在為該特定主題配置的分區(qū)中,與之前的方案類似。
  • 單個消費(fèi)者訂閱一個特定的主題,假設(shè)Topic-01與Group ID為Group-1。
  • kafka用相同的方式,發(fā)布-訂閱消息的消費(fèi)者互動,直到新的消費(fèi)訂閱同一主題,主題-01與同組ID為第1組。
  • 一旦新消費(fèi)者到達(dá),kafka將其業(yè)務(wù)轉(zhuǎn)為共享模式,并在兩個消費(fèi)者之間共享數(shù)據(jù)。這種共享將繼續(xù)進(jìn)行,直到協(xié)調(diào)者的數(shù)量達(dá)到為該特定主題配置的分區(qū)數(shù)。
  • 一旦消費(fèi)者數(shù)量超過了分區(qū)數(shù)量,新的消費(fèi)者將不會再收到任何消息,直到任何一個現(xiàn)有的消費(fèi)者取消訂閱。出現(xiàn)這種情況是因?yàn)閗afka的每個消費(fèi)者將被分配至少一個分區(qū),一旦所有分區(qū)分配給現(xiàn)有的消費(fèi)者,新消費(fèi)者將不得不等待。
  • 此功能也稱為消費(fèi)者組。以同樣的方式,kafka將以非常簡單和有效的方式提供兩種系統(tǒng)中最好的。

ZooKeeper的作用

Apache Kafka的關(guān)鍵依賴是Apache Zookeeper,它是一種分布式配置和同步服務(wù)。Zookeeper作為kafka經(jīng)紀(jì)人和消費(fèi)者之間的協(xié)調(diào)接口。Kafka服務(wù)器通過Zookeeper群集共享信息。kafka在Zookeeper中存儲基本元數(shù)據(jù),例如有關(guān)主題,經(jīng)紀(jì)人,消費(fèi)者偏移量(隊(duì)列讀者)等的信息。

由于所有關(guān)鍵信息都存儲在Zookeeper中,并且通常會在其整體中復(fù)制此數(shù)據(jù),所以Kafka代理/ Zookeeper的故障不會影響Kafka群集的狀態(tài)。一旦Zookeeper重啟,Kafka將恢復(fù)狀態(tài)。這給kafka零停機(jī)。kafka經(jīng)紀(jì)人之間的領(lǐng)導(dǎo)選舉也是在領(lǐng)導(dǎo)失敗的情況下使用Zookeeper完成的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • Kafka官網(wǎng):http://kafka.apache.org/入門1.1 介紹Kafka? 是一個分布式流處理系...
    it_zzy閱讀 4,012評論 3 53
  • kafka的定義:是一個分布式消息系統(tǒng),由LinkedIn使用Scala編寫,用作LinkedIn的活動流(Act...
    時待吾閱讀 5,538評論 1 15
  • Kafka入門經(jīng)典教程-Kafka-about云開發(fā) http://www.aboutyun.com/threa...
    葡萄喃喃囈語閱讀 10,981評論 4 54
  • ** 今天看了一下kafka官網(wǎng),嘗試著在自己電腦上安裝和配置,然后學(xué)一下官方document。** Introd...
    RainChang閱讀 5,144評論 1 30

友情鏈接更多精彩內(nèi)容