Kafka 分布式消息隊列介紹


Kafka 分布式消息隊列 類似產品有JBoss、MQ

一、由Linkedln 開源,使用scala開發,有如下幾個特點:

(1)高吞吐

(2)分布式

(3)支持多語言客戶端 (C++、Java)

二、組成: 客戶端是 producer 和 consumer,提供一些API,服務器端是Broker,客戶端提供可以向Broker內發布消息、消費消息,服務器端提供消息的存儲等功能

Kafka 特點是支持分區、分布式、可拓展性強

三、Kafka 的消息分幾個層次

(1)Topic 一類主題

(2)Partition 默認每個消息有2個分區,創建Topic可以指定分區數,1天有 1億行可以分8個分區,如果每天幾十萬行就一個分區吧

(3)Message 是每個消息

四、數據處理流程

1.生產者 生產消息、將消息發布到指定的topic分區

2.kafka 集群接收到producer發過來的消息后,將其持久化到硬盤,可以指定時長,而不關注消息是否被消費

3.consumer從kafka集群pull或push方式,並控制獲取消息的offset偏移量,consumer重啟時需要根據offset開始再次消費數據,consumer自己維護offset

五、kafka如何實現高吞吐量

1.充分利用磁盤的順序讀寫
2.數據批量發送
3.數據壓縮
4.Topic划分多個partition

六、kafka 如何實現load balance &HA

1)producer 根據用戶指定的算法,將消息發送到指定的partition
2)存在多個partition,每個partition存在多個副本replica,每個replica分布在不同的broker節點上
3)每個partition需要選取lead partition,leader partition負責讀寫,並由zookeeper負責fail over 快速失敗
4)通過zookeeper管理broker與consumer的動態加入與離開

七、擴容

當需要增加broker節點時,新增的broker會向zookeeper注冊,而producer及consumer會根據zookeeper上的watcher感知這些變化,並及時作出調整


免責聲明!

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



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