Kafka 學習筆記之 架構


Kafka的概念:

1、 AMQP協議

Advanced Message Queuing Protocol (高級消息隊列協議)
The Advanced Message Queuing Protocol (AMQP): 是一個標准開放的應用層的消息中間件(Message Oriented Middleware)協議。AMQP定義了通過網絡發送的字節流的數據格式。因此兼容性非常好,任何實現AMQP協議的程序都可以和與AMQP協議兼容的其他程序交互,可以很容易做到跨語言,跨平台。
 
2、消費者:(Consumer):從消息隊列中請求消息的客戶端應用程序
3、生產者:(Producer)  :向broker發布消息的應用程序
4、AMQP服務端(broker):用來接收生產者發送的消息並將這些消息路由給服務器中的隊列,便於fafka將生產者發送的消息,動態的添加到磁盤並給每一條消息一個偏移量,所以對於kafka一個broker就是一個應用程序的實例
 
Kafka架構
生產者生產消息、kafka集群、消費者獲取消息這樣一種架構,如下圖:
kafka集群中的消息,是通過Topic(主題)來進行組織的,如下圖:
 
1、主題(Topic):一個主題類似新聞中的體育、娛樂、教育等分類概念,在實際工程中通常一個業務一個主題。
2、分區(Partition):一個Topic中的消息數據按照多個分區組織,分區是kafka消息隊列組織的最小單位,一個分區可以看作是一個FIFO( First Input First Output的縮寫,先入先出隊列)的隊列。
 
工作圖:
根據以上架構圖代碼演示:
1. 創建Topic:
./kafka-topics.sh --create --zookeeper hadoop1:2181,hadoop2:2181,hadoop3:2181 --replication-factor 2 --partitions 3 --topic partitionTopic
2. ./kafka-topics.sh --describe --zookeeper hadoop1:2181,hadoop2:2181,hadoop3:2181 --topic partitionTopic
可以看見我們一共有3個分區分別是0,1,2, replica 有2個。這和我們在上面命令設置的是一致的。
partition 0 的leader在broker1, follower在broker2
partition 1 的leader在broker2, follower在broker0
partition 2 的leader在broker0, follower在brokder1
一個patition只會在一個broker上,replica被均勻的分布在各個kafka server(broker)上 
 
如果replicas 數設置大於 broker數會出現什么情況呢?
Kafka並不允許這種情況發生,因為在一個broker上如果有2個replica其實是沒有意義的,因為再多的replica同時在一台broker上,隨着該broker的crash,一起不可用。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM