kafka入門相關概念
一、釋出和訂閱系統
想象成公眾號,作者在公眾號上寫文章,讀者訂閱公眾號看文章。
二、假如不用訊息中介軟體,不用kafka
模擬一下,有6個J國的人,同時給6個G國的人投遞東西,J國的每個人都要對應6個G國的人,而G國的每個人又要收到6個J國的人投遞的東西。
那麼當物件多的時候,兩邊都會很忙,而且會存在效率低,排隊,甚至投遞錯的風險。
那麼訊息中介軟體的目的就是成立一箇中轉站,類似於外賣取餐櫃,外賣小哥把餐放到取餐櫃就可以走了,而點餐的人也不用第一時間下來取餐,而且外賣小哥和點餐者之間沒有任何聯絡,也不用擔心萬一某個外賣小哥今天休假了,那麼他對應的點餐者就沒辦法取餐。
三、相關概念
1、訊息
就是資料,類似於快遞,外賣。
2、生產者
就是向kafka傳送資料的程式,類似於快遞員,外賣小哥。
3、消費者
就是從kafka訂閱訊息,獲取資料的程式,類似於點餐者,購買者。
4、主題(Topic)
給不同的資料加上標籤,類似於不同的外賣不同的種類一樣,火鍋,冒菜,炒飯。。。。
這樣消費者也可以根據標籤獲取自己想要的資料。
5、分割槽(Partition)
主題下面還有分割槽,這樣可以將一個主題分佈在多個伺服器下面。
生產者如何確認將資料放入哪一個分割槽?
1、生產者可以指定分割槽:
比如:生產者指明瞭將資料放到主題1的分割槽1下。
2、生產者沒有指定分割槽:
又要引入兩個概念:
2.1、鍵:一個標記,每一個值,每一個數據都會對應一個標記。
2.2、分割槽器:一個演算法,可以理解為輸入一個鍵,通過計算返回告訴你應該去哪一個分割槽。
小結:那麼一條訊息將會包含以下資訊:
主題、分割槽、鍵、值(具體資料)
6、偏移量(offset)
分割槽裡,各個訊息的位置,1,2,3,4這樣,也就是第幾個的意思。
一個分割槽裡,每個訊息的偏移量是唯一的。
消費者只能順序讀取。
7、kafka伺服器(broker)
8、kafka叢集:就是多個broker
資料重複性,保證資料的安全。萬一其中一個broker宕機了,那麼另外一個broker可以提供資料。