1. 程式人生 > 其它 >kafka大白話入門

kafka大白話入門

關鍵詞:

  1. 訂閱-釋出系統:類比微信公眾號
  2. 發訊息的演進
  3. 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死掉。