公有云使用Kafka作為消息引擎,以下概念基于Kafka進行描述。
Topic
消息主題。消息的生產與消費,圍繞消息主題進行生產、消費以及其他消息管理操作。
Topic也是消息隊列的一種發布與訂閱消息模型。生產者向消息主題發布消息,多個消費者訂閱該消息主題的消息,生產者與消費者彼此并無直接關系。
生產者(Producer)
向Topic(消息主題)發布消息的一方。發布消息的最終目的在于將消息內容傳遞給其他系統/模塊,使對方按照約定處理該消息。
消費者(Consumer)
從Topic(消息主題)訂閱消息的一方。訂閱消息最終目的在于處理消息內容,如日志集成場景中,監控告警平臺(消費者)從主題訂閱日志消息,識別出告警日志并發送告警消息/郵件。
節點(Broker)
即Kafka集群架構設計中的單個Kafka進程,一個Kafka進程對應一臺服務器,因此手冊中描述的節點,還包括對應的存儲、帶寬等服務器資源。
分區(Partition)
為了實現水平擴展與高可用,Kafka將Topic劃分為多個分區,消息被分布式存儲在分區中。
副本(Replica)
消息的備份存儲。為了確保消息可靠,Kafka創建Topic時,每個分區會分別從節點中選擇1個或多個,對消息進行冗余存儲。
Topic的所有消息分布式存儲在各個分區上,分區在每個副本存儲一份全量數據,副本之間的消息數據保持同步,任何一個副本不可用,數據都不會丟失。
每個分區都隨機挑選一個副本作為Leader,該分區所有消息的生產與消費都在Leader副本上完成,消息從Leader副本復制到其他副本(Follower)。
Kafka的主題和分區屬于邏輯概念,副本與節點屬于物理概念。下圖通過消息的生產與消費流向,解釋了Kafka的分區、節點與主題間的關系。
圖 Kafka消息流
