更新時(shí)間:2020-05-29 來(lái)源:黑馬程序員 瀏覽量:
Kafka是一個(gè)高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它在實(shí)時(shí)計(jì)算系統(tǒng)中有著非常強(qiáng)大的功能。通常情況下,使用Kafka構(gòu)建系統(tǒng)或應(yīng)用程序之間的數(shù)據(jù)管道,用來(lái)轉(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語(yǔ)言編寫,是一個(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),主要用來(lái)解決應(yīng)用解耦、異步消息等問(wèn)題,在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ù)過(guò)程。
(2)高吞吐量、低延遲。即使在非常廉價(jià)的機(jī)器上,Kafka也能做到每秒處理幾十萬(wàn)條消息,而它的延遲最低只有幾毫秒。
(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)支持多種客戶端語(yǔ)言。Kafka支持Java、.NET、PHP、Python等多種語(yǔ)言。
在大數(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一般用來(lái)緩存數(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)組訂閱。
猜你喜歡:
大數(shù)據(jù)系統(tǒng)中的消息傳遞模式【大數(shù)據(jù)培訓(xùn)】
2020-05-29大數(shù)據(jù)培訓(xùn)之flink從入門到精通視頻教程【黑馬程序員】
2020-05-14Hadoop與Spark的區(qū)別有哪些?【大數(shù)據(jù)培訓(xùn)】
2020-04-24Spark計(jì)算框架在處理數(shù)據(jù)時(shí)有什么優(yōu)勢(shì)?【大數(shù)據(jù)培訓(xùn)】
2020-04-24Spark發(fā)展史:讓你了解是什么Spark?
2020-04-23機(jī)器學(xué)習(xí)可以應(yīng)用于哪些領(lǐng)域?【大數(shù)據(jù)培訓(xùn)】
2020-04-23