發佈訂閱的對象是主題(Topic)架構
向主題發佈消息的客戶端應用程序稱爲生產者(Producer),生產者能夠持續不斷地向多個主題發送消息性能
訂閱這些主題消息的客戶端應用程序稱爲消費者(Consumer),消費者可以同時訂閱多個主題的消息學習
生產者和消費者統稱爲客戶端線程
Kafka的服務端由被稱爲Broker的服務進程構成,一個Kafka集羣由多個Broker組成日誌
Broker負責接收和處理客戶端發送過來的請求,以及對消息進行持久化對象
多個Broker進程可以運行在同一臺機器上,但更常見的作法是將不一樣的Broker分散運行在不一樣的機器上blog
實現高可用的另外一個手段是備份機制(Replication)進程
備份:把相同的數據拷貝到多臺機器上,這些相同的數據拷貝在Kafka中被稱爲副本(Replica)同步
副本的數量是能夠配置的,Kafka定義了兩類副本:領導者副本(Leader Replica)和追隨者副本(Follower Replica)it
Kafka中的分區機制是將每一個主題劃分紅多個分區(Partition),每一個分區是一組有序的消息日誌
生產者生產的每條消息只會被髮送到一個分區中,Kafka的分區編號是從0開始的
副本是在分區這個層級定義的,每一個分區下能夠配置N個副本,只能有1個領導者副本和N-1個追隨者副本
生產者向分區(分區的領導者副本)寫入消息,每條消息在分區中的位置由位移(Offset)來表徵,而分區位移老是從0開始
三層消息架構
點對點模型(Peer to Peer,P2P):同一條消息只能被下游的一個消費者消費,其餘消費者不能染指
Kafka經過消費者組(Consumer Group)來實現P2P模型
引入消費者組的目的:提升消費者端的吞吐量(TPS)
消費者實例(Consumer Instance):便可以是運行消費者應用的進程,也能夠是一個線程
重平衡(Rebalance)
消息(Record):消息是Kafka處理的主要對象
主題(Topic):主題是承載消息的邏輯容器,實際使用中多用來區分具體的業務
分區(Partition):一個有序不變的消息序列,每一個主題下有多個分區
消息位移(Offset):也叫分區位移,表示一條消息在分區中的位置,是一個單調遞增且不變的值
副本(Replica)
生產者(Producer):向主題發佈消息的應用程序
消費者(Consumer):從主題訂閱消息的應用程序
消費者位移(Consumer Offset):表徵消費者的消費進度,每一個消費者都有本身的消費者位移
消費者組(Consumer Group):多個消費者實例共同組成一個組,同時消費多個分區以實現高吞吐
重平衡(Rebalance)