更新時(shí)間:2020年05月29日11時(shí)49分 來源:傳智播客 瀏覽次數(shù):
Kafka是一個(gè)高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它在實(shí)時(shí)計(jì)算系統(tǒng)中有著非常強(qiáng)大的功能。通常情況下,使用Kafka構(gòu)建系統(tǒng)或應(yīng)用程序之間的數(shù)據(jù)管道,用來轉(zhuǎn)換或響應(yīng)實(shí)時(shí)數(shù)據(jù),使數(shù)據(jù)能夠及時(shí)地進(jìn)行業(yè)務(wù)計(jì)算,得出相應(yīng)結(jié)果。
Kafka是由Apache軟件基金會(huì)開發(fā)的一個(gè)開源流處理平臺(tái),它使用Scala和Java語言編寫,是一個(gè)基于Zookeeper系統(tǒng)的分布式發(fā)布訂閱消息系統(tǒng),該項(xiàng)目的設(shè)計(jì)初衷是為實(shí)時(shí)數(shù)據(jù)提供一個(gè)統(tǒng)一、高通量、低等待的消息傳遞平臺(tái)。在0.10版本之前,Kafka只是一個(gè)消息系統(tǒng),主要用來解決應(yīng)用解耦、異步消息等問題,在0.10版本之后,Kafka推出了連接器與流處理的功能,使其逐漸成為一個(gè)流式數(shù)據(jù)平臺(tái)。
ApacheKafka作為分布式消息系統(tǒng),可以處理大量的數(shù)據(jù),并能夠?qū)⑾囊粋€(gè)端點(diǎn)傳遞到另外一個(gè)端點(diǎn)。Kafka系統(tǒng)在大數(shù)據(jù)領(lǐng)域中的應(yīng)用非常普遍,它能夠在離線和實(shí)時(shí)兩種大數(shù)據(jù)計(jì)算架構(gòu)中處理數(shù)據(jù),這得益于Kafka的眾多優(yōu)點(diǎn),其優(yōu)點(diǎn)具體如下。
(1)解耦。Kafka具備消息系統(tǒng)的優(yōu)點(diǎn),只要生產(chǎn)者和消費(fèi)者數(shù)據(jù)兩端遵循接口約束,就可以自行擴(kuò)展或修改數(shù)據(jù)處理的業(yè)務(wù)過程。
(2)高吞吐量、低延遲。即使在非常廉價(jià)的機(jī)器上,Kafka也能做到每秒處理幾十萬條消息,而它的延遲最低只有幾毫秒。
(3)持久性。Kafka可以將消息直接持久化在普通磁盤上,且磁盤讀寫性能優(yōu)異。
(4)擴(kuò)展性。Kafka集群支持熱擴(kuò)展,Kaka集群?jiǎn)?dòng)運(yùn)行后,用戶可以直接向集群添。
(5)容錯(cuò)性。Kafka會(huì)將數(shù)據(jù)備份到多臺(tái)服務(wù)器節(jié)點(diǎn)中,即使Kafka集群中的某一臺(tái)加新的Kafka服務(wù)節(jié)點(diǎn)宕機(jī),也不會(huì)影響整個(gè)系統(tǒng)的功能。
(6)支持多種客戶端語言。Kafka支持Java、.NET、PHP、Python等多種語言。
在大數(shù)據(jù)計(jì)算系統(tǒng)的開發(fā)場(chǎng)景中,若需要對(duì)接外部數(shù)據(jù)源時(shí),就可以使用Kafka系統(tǒng),如讀者熟悉的日志收集系統(tǒng)和消息系統(tǒng),Kafka讀取日志系統(tǒng)中的數(shù)據(jù),每得到一條數(shù)據(jù),就可以及時(shí)地處理一條數(shù)據(jù),這就是常見的流式計(jì)算框架。在流式計(jì)算框架中,Kafka一般用來緩存數(shù)據(jù),它與Apache旗下的Spark、Storm等計(jì)算框架有著非常好的集成,這些計(jì)算框架可以接收Kafka中的緩存數(shù)據(jù)并進(jìn)行計(jì)算,實(shí)時(shí)得出計(jì)算結(jié)果。
Kafka使用消費(fèi)組(ConsumerGroup)的概念統(tǒng)一了點(diǎn)對(duì)點(diǎn)消息傳遞模式和發(fā)布訂閱消息傳遞模式,當(dāng)Kafka使用點(diǎn)對(duì)點(diǎn)模式時(shí),它可以將待處理的工作任務(wù)平均分配給消費(fèi)組中的消費(fèi)者成員;當(dāng)使用發(fā)布訂閱模式時(shí),它可以將消息廣播給多個(gè)消費(fèi)組。Kafka采用多個(gè)消費(fèi)組結(jié)合多個(gè)消費(fèi)者,既可以擴(kuò)展消息處理的能力,也允許消息被多個(gè)消費(fèi)組訂閱。
猜你喜歡:
如何通過ECharts js實(shí)現(xiàn)數(shù)據(jù)可視化面板[大數(shù)據(jù)培訓(xùn)視頻教程]
2020-03-22Kafka的常用API介紹[大數(shù)據(jù)培訓(xùn)]
2020-01-03Mysql幫助信息命令是什么意思?[大數(shù)據(jù)培訓(xùn)]
2019-11-13Apache Flume timestamp和host攔截器使用
2019-11-08用戶流失預(yù)警項(xiàng)目實(shí)戰(zhàn)[大數(shù)據(jù)培訓(xùn)]
2019-11-08windows下登錄MySQL數(shù)據(jù)庫的兩種方式【大數(shù)據(jù)培訓(xùn)】
2019-11-08北京校區(qū)