1. 程式人生 > >kafka中的幾個基本概念

kafka中的幾個基本概念

Kafka架構是由producer(訊息生產者)、consumer(訊息消費者)、borker(kafka叢集的server,負責處理訊息讀、寫請求,儲存訊息,在kafka cluster這一層這裡,其實裡面是有很多個broker)、topic(訊息佇列/分類相當於佇列,裡面有生產者和消費者模型)、zookeeper(元資料資訊存在zookeeper中,包括:儲存消費偏移量,topic話題資訊,partition資訊) 這些部分組成。

kafka裡面的訊息是有topic來組織的,簡單的我們可以想象為一個佇列,一個佇列就是一個topic,然後它把每個topic又分為很多個partition,這個是為了做並行的,在每個partition內部訊息強有序,相當於有序的佇列,其中每個訊息都有個序號offset,比如0到12,從前面讀往後面寫。一個partition對應一個broker,一個broker可以管多個partition,比如說,topic有6個partition,有兩個broker,那每個broker就管3個partition。這個partition可以很簡單想象為一個檔案,當資料發過來的時候它就往這個partition上面append,追加就行,訊息不經過記憶體緩衝,直接寫入檔案,kafka和很多訊息系統不一樣,很多訊息系統是消費完了我就把它刪掉,而kafka是根據時間策略刪除,而不是消費完就刪除,在kafka裡面沒有一個消費完這麼個概念,只有過期這樣一個概念。

producer自己決定往哪個partition裡面去寫,這裡有一些的策略,譬如hash。consumer自己維護消費到哪個offset,每個consumer都有對應的group,group內是queue消費模型(各個consumer消費不同的partition,因此一個訊息在group內只消費一次),group間是publish-subscribe消費模型,各個group各自獨立消費,互不影響,因此一個訊息在被每個group消費一次。

特別說明:

1、kafka中的元資料是指:

message中的offset

topic的話題

partition的ID等資訊

2、在kafka中的概念是;

broker 相當於叢集的節點

topic——>partition——>message——segment

問題:在kafka中message和segment是什麼區別?什麼關係?