一、kafka中的術語解釋
生產者,上圖有兩個生產者,往同乙個往topic(主題)發訊息。
(2)、topic:
主題,這是乙個邏輯概念,就和資料庫表一樣,資料庫表可以存在於多個資料庫,同樣
傳送到topic的資料也會分散到不同的kafka節點上。
(3)、partition:
分割槽,乙個topic可以有多個分割槽,每個分割槽會依據topic的副本數建立對應數量的分割槽副本,
分散在不同的kafka節點上。
比如乙個topic有3個分割槽,每個分割槽有3個副本,
那麼每個分割槽就會建立出3個分割槽副本到多個kafka節點上,
每個節點上都有乙個分割槽的主副本(learder)和多個其它分割槽的從副本(follower)。
learder負責讀寫操作。
follower負責容災備份,在learder宕機的情況下參與投票選舉新learder。
由於每個分割槽的learder和follower分散在不同的kafka節點上,
所以可以保證learder所在伺服器宕機之後,其它節點上的follower資料還在。
(4)、consumer
<1>、消費者,每個消費者都從屬於乙個consumer group,
一條訊息可以分發到多個 consumer group,
consumer group裡面可以包含很多consumer ,
而乙個訊息只能被其中的乙個consumer 消費。
<2>、如果要實現發布訂閱模式,
需要每個consumer 分為乙個組,
這樣就可以**。
<3>、實現點對點的模式,就所以consumer 設定為乙個組,
組內競爭贏的consumer 就獲取訊息。
<4>、訊息是以consumer group為依據分發的,
而consumer group裡面只能有乙個consumer 能消費訊息。
<5>、consumer消費者只需要維護乙個offset值,這個值是記錄讀取的偏移量的。
資料會在一定時間記憶體在於partition裡面,
就算讀取完成也不會消失,根據這個offset來判斷讀取到**了。
所以onsumer的讀取對於其他的producer和consumer的操作沒有影響。
<6>、訊息在同乙個partition之內讀取,是可以保證順序的,
因為consumer消費者記錄的offset是針對於乙個分割槽的
如果是多個分割槽,寫入到分割槽和讀取分割槽資料的順序就不好控制了。
所以一般一種型別的訊息資料,只寫入乙個partition,
也只往乙個consumer group傳送,
並且consumer group裡面也只有乙個consumer 。
這樣就可以保證訊息的順序寫入和讀取。
(5)、kafka和zookeeper的關係:
<1>、broker註冊:
broker資料節點分散在不同的伺服器,需要進行集中管理,
每個broker在啟動時,都會到zookeeper上進行註冊,
每個broker就會將自己的ip位址和埠資訊記錄到該節點中去。
其中,broker建立的節點型別是臨時節點,
一旦broker宕機,則對應的臨時節點也會被自動刪除。
類似於乙個註冊中心
<2>、topic註冊
同乙個topic的訊息會被分成多個分割槽副本並將其分布在多個broker上
這些分割槽副本的資訊及與broker的對應關係也都是由zookeeper在維護
(xx分割槽在哪個broker上)。
<3>、用處:
(1)、維護broker和分割槽副本直接的對應關係:
consumer 在讀取的時候,需要去zookeeper上查詢對應的節點,
從而知道從哪個borker讀資料。
(2)、生產者負載均衡:
由於同乙個topic訊息會被分發到對應的分割槽,
乙個分割槽又會生成多個副本,這些副本分布在多個broker上,
因此,生產者需要將訊息合理地傳送到這些分布式的broker上。
每個broker啟動時,都會將broker註冊到zookeeper上
生產者會通過該節點的變化來動態地感知到broker伺服器
列表的變更,這樣就可以實現動態的負載均衡機制。
(3)、消費者負載均衡
和生產者一樣,消費者也需要從zookeeper上獲取broker列表
多個消費者合理地從對應的broker伺服器上接收訊息。
(4)、分割槽 與 消費者 的關係
(5)、訊息消費進度offset 記錄
總結:
kafka的一些關係,註冊到zookeeper上,
consumer要取資料,producer要傳送資料,
就從zookeeper這個分布式協調者這裡來拿。
kafka詳解一 Kafka簡介
分類 kafka 2014 08 18 10 45 375人閱讀收藏 舉報 背景 當今社會各種應用系統諸如商業 社交 搜尋 瀏覽等像資訊工廠一樣不斷的生產出各種資訊,在大資料時代,我們面臨如下幾個挑戰 如何收集這些巨大的資訊 如何分析它 如何及時做到如上兩點 以上幾個挑戰形成了乙個業務需求模型,即生...
Kafka 詳解(一) 簡介
在前面幾篇部落格我們介紹過一種訊息中介軟體 rabbitmq,本篇部落格我們介紹另外乙個訊息中介軟體 kafka,kafka是由linkedin開發的,使用scala編寫,是一種分布式,基於發布 訂閱的訊息系統,在介紹 kafka 之前,我們首先需要知道為什麼會誕生 kafka 假設 a 公司有乙個...
kafka入門簡介
1 概述 kafka是linkedin於2010年12月份開源的訊息系統,它主要用於處理活躍的流式資料。活躍的流式資料在web 應用中非常常見,這些資料報括 的pv 使用者訪問了什麼內容,搜尋了什麼內容等。這些資料通常以日誌的形式記錄下來,然後每隔一段時間進行一次統計處理。2 設計目標 1 資料在磁...