首頁技術(shù)文章正文

Kafka是什么?kafka有什么優(yōu)點(diǎn)?

更新時間:2020-05-29 來源:黑馬程序員 瀏覽量:

Kafka是一個高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它在實(shí)時計(jì)算系統(tǒng)中有著非常強(qiáng)大的功能。通常情況下,使用Kafka構(gòu)建系統(tǒng)或應(yīng)用程序之間的數(shù)據(jù)管道,用來轉(zhuǎn)換或響應(yīng)實(shí)時數(shù)據(jù),使數(shù)據(jù)能夠及時地進(jìn)行業(yè)務(wù)計(jì)算,得出相應(yīng)結(jié)果。

 

1590724018089_kafa.jpg


Kafka是由Apache軟件基金會開發(fā)的一個開源流處理平臺,它使用Scala和Java語言編寫,是一個基于Zookeeper系統(tǒng)的分布式發(fā)布訂閱消息系統(tǒng),該項(xiàng)目的設(shè)計(jì)初衷是為實(shí)時數(shù)據(jù)提供一個統(tǒng)一、高通量、低等待的消息傳遞平臺。在0.10版本之前,Kafka只是一個消息系統(tǒng),主要用來解決應(yīng)用解耦、異步消息等問題,在0.10版本之后,Kafka推出了連接器與流處理的功能,使其逐漸成為一個流式數(shù)據(jù)平臺。

 

ApacheKafka作為分布式消息系統(tǒng),可以處理大量的數(shù)據(jù),并能夠?qū)⑾囊粋€端點(diǎn)傳遞到另外一個端點(diǎn)。Kafka系統(tǒng)在大數(shù)據(jù)領(lǐng)域中的應(yīng)用非常普遍,它能夠在離線和實(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集群啟動運(yùn)行后,用戶可以直接向集群添。

(5)容錯性。Kafka會將數(shù)據(jù)備份到多臺服務(wù)器節(jié)點(diǎn)中,即使Kafka集群中的某一臺加新的Kafka服務(wù)節(jié)點(diǎn)宕機(jī),也不會影響整個系統(tǒng)的功能。

(6)支持多種客戶端語言。Kafka支持Java、.NET、PHP、Python等多種語言。

 

在大數(shù)據(jù)計(jì)算系統(tǒng)的開發(fā)場景中,若需要對接外部數(shù)據(jù)源時,就可以使用Kafka系統(tǒng),如讀者熟悉的日志收集系統(tǒng)和消息系統(tǒng),Kafka讀取日志系統(tǒng)中的數(shù)據(jù),每得到一條數(shù)據(jù),就可以及時地處理一條數(shù)據(jù),這就是常見的流式計(jì)算框架。在流式計(jì)算框架中,Kafka一般用來緩存數(shù)據(jù),它與Apache旗下的Spark、Storm等計(jì)算框架有著非常好的集成,這些計(jì)算框架可以接收Kafka中的緩存數(shù)據(jù)并進(jìn)行計(jì)算,實(shí)時得出計(jì)算結(jié)果。

1577370495235_學(xué)IT就到黑馬程序員.gif


Kafka使用消費(fèi)組(ConsumerGroup)的概念統(tǒng)一了點(diǎn)對點(diǎn)消息傳遞模式和發(fā)布訂閱消息傳遞模式,當(dāng)Kafka使用點(diǎn)對點(diǎn)模式時,它可以將待處理的工作任務(wù)平均分配給消費(fèi)組中的消費(fèi)者成員;當(dāng)使用發(fā)布訂閱模式時,它可以將消息廣播給多個消費(fèi)組。Kafka采用多個消費(fèi)組結(jié)合多個消費(fèi)者,既可以擴(kuò)展消息處理的能力,也允許消息被多個消費(fèi)組訂閱。

猜你喜歡:

機(jī)器學(xué)習(xí)可以應(yīng)用于哪些領(lǐng)域?

什么是機(jī)器學(xué)習(xí)?

大數(shù)據(jù)系統(tǒng)中的消息傳遞模式

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!