|
Kafka 分布式消息隊列 類似產(chǎn)品有JBoss、MQ 一、由Linkedln 開源,使用scala開發(fā),有如下幾個特點: (1)高吞吐 (2)分布式 (3)支持多語言客戶端 (C++、Java) 二、組成: 客戶端是 producer 和 consumer,提供一些API,服務器端是Broker,客戶端提供可以向Broker內(nèi)發(fā)布消息、消費消息,服務器端提供消息的存儲等功能 Kafka 特點是支持分區(qū)、分布式、可拓展性強 三、Kafka 的消息分幾個層次 (1)Topic 一類主題 (2)Partition 默認每個消息有2個分區(qū),創(chuàng)建Topic可以指定分區(qū)數(shù),1天有 1億行可以分8個分區(qū),如果每天幾十萬行就一個分區(qū)吧 (3)Message 是每個消息 四、數(shù)據(jù)處理流程 1.生產(chǎn)者 生產(chǎn)消息、將消息發(fā)布到指定的topic分區(qū) 2.kafka 集群接收到producer發(fā)過來的消息后,將其持久化到硬盤,可以指定時長,而不關(guān)注消息是否被消費 3.consumer從kafka集群pull或push方式,并控制獲取消息的offset偏移量,consumer重啟時需要根據(jù)offset開始再次消費數(shù)據(jù),consumer自己維護offset 五、kafka如何實現(xiàn)高吞吐量 1.充分利用磁盤的順序讀寫 六、kafka 如何實現(xiàn)load balance &HA 1)producer 根據(jù)用戶指定的算法,將消息發(fā)送到指定的partition 七、擴容 當需要增加broker節(jié)點時,新增的broker會向zookeeper注冊,而producer及consumer會根據(jù)zookeeper上的watcher感知這些變化,并及時作出調(diào)整 |
|
|