1. 程式人生 > >Kafka 學習筆記之 架構

Kafka 學習筆記之 架構

分別是 producer 跨語言 lan protoc repl cnblogs bsp 動態

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,一起不可用。 技術分享

Kafka 學習筆記之 架構