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