一文了解kafka

轉自:ImportNew  一文了解Kafka

功能:

解耦

緩存:緩衝

削峯限流(靈活性與峯值處理能力)

可恢復性

異步通信

主要概念:

borker:topic、message、partition、segment、log&index、replication(leader & follower)

             broker:一個Kafka服務,ip:port

             topic:邏輯概念,主題,相當於一張數據庫表。message:消息,相當於表中的一條記錄

             partition:物理概念,分區,一張邏輯表實際存儲時分爲多個分區來存儲。

                                                       1個partition對應文件系統中的1個文件夾,名字爲topic名+partition序號。

             segment:物理概念,段,每個分區分爲多個segment。

                                                       1個segment對應文件系統中的2個文件.log和.index文件。

                                                        文件名爲segment中最小索引的offset值。

                                                        .log文件存儲message的實際內容,.index文件存儲每個message的offset和其數據在.log文件中的偏移量。如果要去消費offset爲3的數據,首先通過二分法查找數據在哪個.index文件中,然後在.index文件中查找其數據在.log文件中的偏移量

producer:一段代碼,生產消息,指定topic後向broker發送消息。

consumer:一段代碼,消費特定topic下的消息。

                

發佈/訂閱模式:

一條消息可以被多個消費者組消費。但是對於同一個消費者組的消費者來說,一條消息只能被組內的一個消費消費;

消費者組:分佈式環境下,一段消費者代碼部署到了多個服務器上,每個服務上的這段代碼都是一個消費者,形成了消費者組。                    在業務邏輯上,一條消息也只允許被其中的一個消費者消費。

                不同的消費者代碼,對同一條消息的業務處理邏輯不同,因此多個不同的消費者組,可以對同一條消息進行消費。

技術實現:對每個消費者組,記錄其在每個partition上的消費的offset,offset只能加,不能回退。

可靠性和一致性的技術實現:

可靠性通過ACK實現:

partition收到數據後,向生產者發送ACK,如果生產者收到ACK就進行下一輪的發送,否則重新發送。

發送ACK的時機:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章