(一)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
-----------------------------------------------------------------------------------|
憨