kafka大白話入門
阿新 • • 發佈:2021-06-25
關鍵詞:
- 訂閱-釋出系統:類比微信公眾號
- 發訊息的演進
- kafka的一些概念
1.訂閱釋出系統
2. 發訊息的演進
一對一:
A <--> B 的通訊,只有一條通訊鏈路
多對多:
3*3的通訊,會產生9條通訊鏈路
當有很多人通訊的時候:
N*N條通訊鏈路,此時鏈路網路會特別複雜臃腫,而且會有很多已經發過的訊息重複傳送,不能複用。
是時候了,進行升級:加一層,kafka來了
往中間加一層,由他來接收和轉發,這個其實就是kafka;他可以接收**生產者**傳送的方框、心性、圓圈類的**訊息**, **消費者**可以從裡面取出自己想要的資訊。
幾個問題引出的kafka概念
1. 生產者、消費者、訊息
2. 不同的消費者想要的訊息類別不一樣怎麼辦? (topic主題)
- 這裡分開主題後,就能區分消費者需要哪類訊息了
3.一個主題可能包含多個分割槽
- 然後引入partition(分割槽)的概念,分割槽可以分佈在多個伺服器上,這樣一個主題就可以分佈在多個伺服器上了,就不再侷限於單個伺服器了。
- 分割槽的好處還有提高消費方的吞吐量!
4.生產者怎麼知道訊息發往哪個分割槽呢?
引出幾個新的概念:鍵、分割槽器;(類似於key和雜湊函式)
- 那麼一條訊息可能包含以下的內容
5.消費者怎麼讀取資料呢?
答:根據偏移量,比如消費者說:我要topic主題為圓圈的partition 0分割槽的第2個訊息
- 偏移量:也就是第幾個
- 偏移量在寫入的時候就已經定好了
- 一個分割槽裡,每個訊息的偏移量是唯一的
- 消費者只能順序讀取:比如消費者要partition 0 的第4個訊息,但他還沒讀第3個,那就不允許
6.broker:一個獨立的kafka伺服器
一個獨立的kafka伺服器就是broker,一個broker裡有多個主題,每個主題可能有多個分割槽。
7. Kafka叢集:多個broker組成
- 多個broker組成kafka叢集。
- broker中還要有個controler的角色(nameserver),負責:分割槽該分配給哪個broker、監控哪個broker死掉。