1. 程式人生 > 實用技巧 >(一)kafka

(一)kafka

為什麼會有訊息系統

訊息系統起到了一個什麼作用呢?

  快取的作用

  解耦合

  非同步處理的效果

  流量控制

1. kafka的核心概念

Topic(主題):類似於關係型資料庫裡面的一張表(只是邏輯上的概念)

Partition(分割槽):跟資料裡面的分割槽含義差不多,是為了提高效能的。

  分割槽具體在伺服器上面表現為其實就是一個目錄

  一個主題下面,有多個分割槽,這些分割槽會儲存到不同的kafka的伺服器上面

  或者我們可以這樣說:其實就是在不同的主機上面見了不同的目錄

每個分割槽內部有

  .index檔案:

  .log檔案:儲存message

  .snapshot檔案:

  .timeindex檔案

Producer(生產者):誰往訊息系統裡面傳送資料,誰就是生產者

Consumer(消費者):誰從kafka裡面去讀取資料,誰就是消費者

Message(資料):在kafka裡面我們管平時處理資料叫訊息

Replica(副本):就是kafka副本,kafka的partition為了保證資料安全,所以每個partition可以設定多個副本

        這些副本室友角色之分的。其中有一個是leader partition(replica之一),其餘的都是follower。

        我們的生產者生產資料的時候,是把資料傳送到leader partition(leader replica)裡面。

         然後follower partition(follower replica)去leader partition那兒自己去同步資料。

         我們消費者消費資料的時候,也是從leader partition這去消費資料的。

Consumer Group(消費者組):消費者組,我們在消費資料的時候,會在程式碼裡面指定一個group.id

         conf.setProperty(“group.id”,“testa”)

         group.id代表的是一個消費組的名字。

建立一個TopicA主題,3個分割槽,指定每個分割槽有3個副本(副本指定2個是比較好的)設計一個分散式的系統,叢集裡面有伺服器宕機,這是一個常態化的事

(kafka0.8之前,沒有副本機制)

生產者傳送資料到TopicA-0(Leader)
消費者消費資料到TopicA-0(Leader)

*****************************Kafka叢集****************************************

-----------------------------------------------------------------------------------|
Broker
TopicA-0(leader)
TopicA-1
TopicA-2




-----------------------------------------------------------------------------------|
Broker
TopicA-1

TopicA-0(follower) 去 TopicA-0(leader)同步資料
TopicA-2



-----------------------------------------------------------------------------------|
Broker
TopicA-2
TopicA-0(follower)
TopicA-1



-----------------------------------------------------------------------------------|