1、kafka是什麼
類jms訊息佇列,結合jms中的兩種模式(點對點模型,發布者/訂閱者模型),可以有多個消費者主動拉取資料,在jms中只有點對點模式才有消費者主動拉取資料。
kafka是乙個生產-消費模型。
producer:生產者,只負責資料生產,生產者的**可以整合到任務系統中。
資料的分發策略由producer決定,預設是defaultpartition utils.abs(key.hashcode) % numpartitions
broker:當前伺服器上的kafka程序。只管資料儲存,不管是誰生產,不管是誰消費。
在集群中每個broker都有乙個唯一brokerid,不得重複。
topic:目標傳送的目的地,這是乙個邏輯上的概念,落到磁碟上是乙個partition的目錄。partition的目錄中有多個segment組合(index,log)
乙個topic對應多個partition[0,1,2,3],乙個partition對應多個segment組合。乙個segment有預設的大小是1g。
每個partition可以設定多個副本(replication-factor 1),會從所有的副本中選取乙個leader出來。所有讀寫操作都是通過leader來進行的。
特別強調,和mysql中主從有區別,mysql做主從是為了讀寫分離,在kafka中讀寫操作都是leader。
consumergroup:資料消費者組,consumergroup可以有多個,每個consumergroup消費的資料都是一樣的。
可以把多個consumer執行緒劃分為乙個組,組裡面所有成員共同消費乙個topic的資料,組員之間不能重複消費。
2、kafka生產資料時的分組策略
預設是defaultpartition utils.abs(key.hashcode) % numpartitions
上文中的key是producer在傳送資料時傳入的,produer.send(keyedmessage(topic,mypartitionkey,messagecontent))
3、kafka如何保證資料的完全生產
ack機制:broker表示發來的資料已確認接收無誤,表示資料已經儲存到磁碟。
0:不等待broker返回確認訊息
1:等待topic中某個partition leader儲存成功的狀態反饋
-1:等待topic中某個partition 所有副本都儲存成功的狀態反饋
4、broker如何儲存資料
在理論環境下,broker按照順序讀寫的機制,可以每秒儲存600m的資料。主要通過pagecache機制,盡可能的利用當前物理機器上的空閒記憶體來做快取。
當前topic所屬的broker,必定有乙個該topic的partition,partition是乙個磁碟目錄。partition的目錄中有多個segment組合(index,log),
但每個段segment file訊息數量不一定相等,這種特性方便old segment file快速被刪除。預設保留7天的資料。
5、partition如何分布在不同的broker上
int i = 0
list
for(int i=0;i<5;i++)
6、consumergroup的組員和partition之間如何做負載均衡
最好是一一對應,乙個partition對應乙個consumer。
如果consumer的數量過多,必然有空閒的consumer。
演算法:當乙個group中,有
consumer
加入或者離開時
,會觸發
partitions均衡.
均衡的最終目的
,是提公升
topic
的併發消費能力,步驟如下:
1、 假如topic1,具有如下
partitions: p0,p1,p2,p3
2、 加入group中
,有如下
consumer: c1,c2
3、 首先根據partition索引號對
partitions
排序: p0,p1,p2,p3
4、 根據consumer.id排序
: c0,c1
5、 計算倍數: m = [p0,p1,p2,p3].size / [c0,c1].size,本例值
m=2(
向上取整
)6、 然後依次分配partitions: c0 = [p0,p1],c1=[p2,p3],即
7、如何保證kafka消費者消費資料是全域性有序的
偽命題如果要全域性有序的,必須保證生產有序,儲存有序,消費有序。
由於生產可以做集群,儲存可以分片,消費可以設定為乙個consumergroup,要保證全域性有序,就需要保證每個環節都有序。
只有乙個可能,就是乙個生產者,乙個partition,乙個消費者。這種場景和大資料應用場景相悖。
資料有序的討論?
乙個partition的資料是否是有序的? 間隔性有序,不連續
針對乙個topic裡面的資料,只能做到partition內部有序,不能做到全域性有序。
特別加入消費者的場景後,如何保證消費者消費的資料全域性有序的?偽命題。
只有一種情況下才能保證全域性有序?就是只有乙個partition。
Kafka知識點總結
kafka是一種高吞吐量的分布式發布訂閱訊息系統,它可以處理消費者規模的 中的所有動作流資料。這種動作 網頁瀏覽,搜尋和其他使用者的行動 是在現代網路上的許多社會功能的乙個關鍵因素。這些資料通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。對於像hadoop一樣的日誌資料和離線分析系統,但又要求...
Kafka知識點總結
下圖所體現出來的知識點 紅色字型表示隱藏知識點 1 kafka生態系統四大角色 生產者 producer kafka集群 broker 消費者 consumer zookeeper。2 每個消費者都必須屬於乙個消費組,乙個組內的消費者可以有多個。3 乙個topic 主題 可以有1到多個partiti...
KafKa的知識點總結
1 kafka是什麼?類jms訊息佇列,結合jms中的兩種模式,可以有多個消費者主動拉取資料,在jms中只有點對點模式才有消費者主動拉取資料。kafka是乙個生產 消費模型。producer 生產者,只負責資料生產,生產者的 可以整合到任務系統中。資料的分發策略由producer決定,預設是defa...