2023學(xué)年完整公開(kāi)課版Kafka分布式_第1頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka分布式_第2頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka分布式_第3頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka分布式_第4頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka分布式_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Kafka分布式2Kafkakafka是一個(gè)吞吐量極高的分布式消息系統(tǒng),其整體設(shè)計(jì)是典型的發(fā)布與訂閱系統(tǒng)模式,在Kafka集群中,沒(méi)有中心主節(jié)點(diǎn)概念,所有服務(wù)器都是對(duì)等的,因此,可以在不做任何配置更改的情況下實(shí)現(xiàn)服務(wù)器的添加與刪除,同樣,消息的生產(chǎn)者和消費(fèi)者也能夠隨意重啟和機(jī)器的上下線3術(shù)語(yǔ)介紹生產(chǎn)者(Producer):消息產(chǎn)生的源頭,負(fù)責(zé)生成消息并發(fā)送到Kafka服務(wù)器。消費(fèi)者(Consumer):消息的使用方,負(fù)責(zé)消費(fèi)Kafka服務(wù)器上的消息。主題(Topic):由用戶定義并配置在Kafka服務(wù)端,用于建立生產(chǎn)者和消費(fèi)者之間的訂閱關(guān)系,生產(chǎn)者發(fā)送消息到指定Topic下,消費(fèi)者從這個(gè)Topic中消費(fèi)消息。消息分區(qū)(Partition):一個(gè)Topic下會(huì)分為多個(gè)分區(qū),如"kafka-test"這個(gè)Topic可以分為10個(gè)分區(qū),分別由兩臺(tái)服務(wù)器提供,那么通??梢耘渲米屆颗_(tái)服務(wù)器提供5個(gè)分區(qū),假設(shè)服務(wù)器ID為0和1,那么分區(qū)為0-0、0-1、0-2、0-3、0-4和1-0、1-1、1-2、1-3、1-4。消息分區(qū)機(jī)制和分區(qū)的數(shù)量與消費(fèi)者的負(fù)載均衡機(jī)制有很大的關(guān)系。4術(shù)語(yǔ)介紹服務(wù)器(Broker):用于存儲(chǔ)信息,在消息中間件中通常被稱為Broker。消費(fèi)者分組(Group):歸組同類消費(fèi)者,多個(gè)消費(fèi)者可以共同消費(fèi)一個(gè)Topic下的消息,每個(gè)消費(fèi)者消費(fèi)其中的部分消息,這些消費(fèi)者組成了消費(fèi)者分組,擁有同一個(gè)分組名稱,通常也被稱為消費(fèi)者集群。偏移量(Offset):消息存儲(chǔ)在Kafka的Broker上,消費(fèi)者拉取消息數(shù)據(jù)的過(guò)程中需要知道消息在文件中的偏移量。5服務(wù)器注冊(cè)Broker是分布式部署并且相互之間相互獨(dú)立,但是需要有一個(gè)注冊(cè)系統(tǒng)能夠?qū)⒄麄€(gè)集群中的Broker管理起來(lái),此時(shí)就使用到了Zookeeper。在Zookeeper上會(huì)有一個(gè)專門(mén)用來(lái)進(jìn)行Broker服務(wù)器列表記錄的節(jié)點(diǎn)/brokers/ids。每個(gè)Broker在啟動(dòng)時(shí),都會(huì)到Zookeeper上進(jìn)行注冊(cè),即到/brokers/ids下創(chuàng)建屬于自己的節(jié)點(diǎn),不同的Broker必須使用不同的BrokerID進(jìn)行注冊(cè)。創(chuàng)建完節(jié)點(diǎn)后,每個(gè)Broker就會(huì)將自己的IP地址和端口信息記錄到該節(jié)點(diǎn)中去。其中,Broker創(chuàng)建的節(jié)點(diǎn)類型是臨時(shí)節(jié)點(diǎn),一旦Broker宕機(jī),則對(duì)應(yīng)的臨時(shí)節(jié)點(diǎn)也會(huì)被自動(dòng)刪除。6Topic注冊(cè)在Kafka中,同一個(gè)Topic的消息會(huì)被分成多個(gè)分區(qū)并將其分布在多個(gè)Broker上,這些分區(qū)信息及與Broker的對(duì)應(yīng)關(guān)系也都是由Zookeeper在維護(hù),由專門(mén)的節(jié)點(diǎn)來(lái)記錄,如/borkers/topics。Kafka中每個(gè)Topic都會(huì)以/brokers/topics/[topic]的形式被記錄,如/brokers/topics/login和/brokers/topics/search等。Broker服務(wù)器啟動(dòng)后,會(huì)到對(duì)應(yīng)Topic節(jié)點(diǎn)(/brokers/topics)上注冊(cè)自己的BrokerID并寫(xiě)入針對(duì)該Topic的分區(qū)總數(shù)。7生產(chǎn)者負(fù)載均衡四層負(fù)載均衡:根據(jù)生產(chǎn)者的IP地址和端口來(lái)為其確定一個(gè)相關(guān)聯(lián)的Broker。通常,一個(gè)生產(chǎn)者只會(huì)對(duì)應(yīng)單個(gè)Broker,然后該生產(chǎn)者產(chǎn)生的消息都發(fā)往該Broker。這種方式邏輯簡(jiǎn)單,每個(gè)生產(chǎn)者不需要同其他系統(tǒng)建立額外的TCP連接,只需要和Broker維護(hù)單個(gè)TCP連接即可。但是,其無(wú)法做到真正的負(fù)載均衡,因?yàn)閷?shí)際系統(tǒng)中的每個(gè)生產(chǎn)者產(chǎn)生的消息量及每個(gè)Broker的消息存儲(chǔ)量都是不一樣的,如果有些生產(chǎn)者產(chǎn)生的消息遠(yuǎn)多于其他生產(chǎn)者的話,那么會(huì)導(dǎo)致不同的Broker接收到的消息總數(shù)差異巨大,同時(shí),生產(chǎn)者也無(wú)法實(shí)時(shí)感知到Broker的新增和刪除。8生產(chǎn)者負(fù)載均衡使用Zookeeper進(jìn)行負(fù)載均衡:由于每個(gè)Broker啟動(dòng)時(shí),都會(huì)完成Broker注冊(cè)過(guò)程,生產(chǎn)者會(huì)通過(guò)該節(jié)點(diǎn)的變化來(lái)動(dòng)態(tài)地感知到Broker服務(wù)器列表的變更,這樣就可以實(shí)現(xiàn)動(dòng)態(tài)的負(fù)載均衡機(jī)制。9消費(fèi)者負(fù)載均衡消費(fèi)者負(fù)載均衡:與生產(chǎn)者類似,Kafka中的消費(fèi)者同樣需要進(jìn)行負(fù)載均衡來(lái)實(shí)現(xiàn)多個(gè)消費(fèi)者合理地從對(duì)應(yīng)的Broker服務(wù)器上接收消息,每個(gè)消費(fèi)者分組包含若干消費(fèi)者,每條消息都只會(huì)發(fā)送給分組中的一個(gè)消費(fèi)者,不同的消費(fèi)者分組消費(fèi)自己特定的Topic下面的消息,互不干擾。10消費(fèi)分區(qū)與消費(fèi)者關(guān)系消費(fèi)分區(qū)與消費(fèi)者的關(guān)系:對(duì)于每個(gè)消費(fèi)者分組,Kafka都會(huì)為其分配一個(gè)全局唯一的GroupID,同一個(gè)消費(fèi)者分組內(nèi)部的所有消費(fèi)者共享該ID。同時(shí),Kafka為每個(gè)消費(fèi)者分配一個(gè)ConsumerID,通常采用“Hostname:UUID”形式表示。在Kafka中,規(guī)定了每個(gè)消息分區(qū)有且只能同時(shí)有一個(gè)消費(fèi)者進(jìn)行消費(fèi),因此,需要在Zookeeper上記錄消息分區(qū)與消費(fèi)者之間的關(guān)系,每個(gè)消費(fèi)者一旦確定了對(duì)一個(gè)消息分區(qū)的消費(fèi)權(quán)力,需要將其ConsumerID寫(xiě)入到對(duì)應(yīng)消息分區(qū)的臨時(shí)節(jié)點(diǎn)上。11消息消費(fèi)進(jìn)度消息消費(fèi)進(jìn)度Offset記錄:在消費(fèi)者對(duì)指定消息分區(qū)進(jìn)行消息消費(fèi)的過(guò)程中,需要定時(shí)地將分區(qū)消息的消費(fèi)進(jìn)度Offset記錄到Zookeeper上,以便在該消費(fèi)者進(jìn)行重啟或者其他消費(fèi)者重新接管該消息分區(qū)的消息消費(fèi)后,能夠從之前的進(jìn)度開(kāi)始繼續(xù)進(jìn)行消息消費(fèi)。12消息者注冊(cè)注冊(cè)到消費(fèi)者分組:每個(gè)消費(fèi)者服務(wù)器啟動(dòng)時(shí),都會(huì)到Zookeeper的指定節(jié)點(diǎn)下創(chuàng)建一個(gè)屬于自己的消費(fèi)者節(jié)點(diǎn),完成節(jié)點(diǎn)創(chuàng)建后,消費(fèi)者就會(huì)將自己訂閱的Topic信息寫(xiě)入該臨時(shí)節(jié)點(diǎn)。13消息者注冊(cè)對(duì)消費(fèi)者分組中的消費(fèi)者的變化注冊(cè)監(jiān)聽(tīng):每個(gè)消費(fèi)者都需要關(guān)注所屬消費(fèi)者分組中其他消費(fèi)者服務(wù)器的變化情況,即對(duì)節(jié)點(diǎn)注冊(cè)子節(jié)點(diǎn)變化的Watcher監(jiān)聽(tīng),一旦發(fā)現(xiàn)消費(fèi)者新增或減少,就觸發(fā)消費(fèi)者的負(fù)載均衡。14消息者注冊(cè)對(duì)Broker服務(wù)器變化注冊(cè)監(jiān)聽(tīng):消費(fèi)者需要對(duì)/broker/ids/[0-N]中的節(jié)點(diǎn)進(jìn)行監(jiān)聽(tīng),如果發(fā)現(xiàn)Broker服務(wù)器列表發(fā)生變化,那么就根據(jù)具體情況來(lái)決定是否需

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論