kafka是乙個分布式的訊息佇列,學習見apache kafka文件,中文翻譯見kafka分享,乙個簡單的入門例子見kafka**入門例項。本文只針對自己感興趣的點記錄下。
producer/consumer:訊息的生成者和使用者。
broker:kafka server充當broker角色,起到訊息佇列的作用。
topic/partion:topic是一類訊息的名稱,乙個topic下的訊息可以分成多區(partion)儲存,乙個分割槽是乙個有序佇列(訊息按接收時間依次追加,利用offset做為唯一id),分區間訊息無序。
zookeeper:broker和consumer向zk註冊,實現元資料的儲存和交換、集群管理。
push/pull:producer通過乙個初始broker.list與broker建立連線,獲取所有broker資訊,主動向乙個topic的分割槽leader推送資訊;consumer通過zk獲取broker列表,主動從broker拉取資訊。
consumer group:為了提高consumer處理並行性,多個consumer可以組成乙個group,乙個topic下的訊息會保證每個group中的乙個consumer消費,乙個group中的consumer交錯消費整個topic。簡單說,topic下的一條訊息會給所有的group,但乙個group中只有乙個consumer接收到該訊息。
乙個機子儲存不下乙個topic時,如何做?又如何做訊息冗餘備份呢?
這就是分割槽的目的,在建立topic時可以指定其分割槽數、備份數,訊息會被hash到不同的分割槽儲存(其hash過程由producer在客戶端處理),每個分割槽有自己的機器。
如上,該kafka集群有3個broker(3個節點),名字為my-replicated-topic-1的topic有4個partition,每個partition有2個replica(每條訊息備份2次,每個replica位於不同的節點),乙個partion有乙個leader負責該partition內的資料讀寫。producer根據訊息的key hash到乙個partition後,直接和該partition的leader通訊。
其中isr(in-sync replicas)同步列表是該partition中處於同步狀態的備份broker,如果乙個broker長時間不和leader通訊,或者訊息數與leader相差太大,leader就會將該broker從isr佇列中移除,該broker就會後台從leader fetch資料,直到up-to-date,然後再次加入isr同步列表。
這些patition、replica資訊與狀態都儲存在zookeeper中,便於leader重新選舉和資訊同步。
待續待讀:
訊息佇列 Kafka學習
kafka是乙個分布式的訊息佇列,學習見apache kafka文件,中文翻譯見kafka分享,乙個簡單的入門例子見kafka 入門例項。本文只針對自己感興趣的點記錄下。producer consumer 訊息的生成者和使用者。broker kafka server充當broker角色,起到訊息佇列...
訊息佇列 訊息佇列 kafka
kafka是乙個分布式的基於發布 訂閱模式的訊息佇列,主要用於大資料實時處理領域。要理解kafka首先要有分布式的概念,要有訊息佇列的概念。分布式系統最大的優勢就是解耦和削峰,這種情況下,a系統生成了乙個訊息,b系統非同步獲取,那麼就需要乙個存放訊息的訊息佇列 mq 相比較傳統的訊息佇列,訊息被消費...
Kafka學習筆記(一) 訊息佇列
二 訊息佇列的應用場景 三 訊息佇列的缺點 四 訊息佇列的兩種模式 訊息 message 是指在應用之間傳送的資料,訊息可以非常簡單,比如只包含文字字串,也可以更複雜,可能包含嵌入物件。訊息佇列 message queue 是一種應用間的通訊方式,訊息傳送後可以立即返回,有訊息系統來確保資訊的可靠專...