更新時間:2020-05-29 來源:黑馬程序員 瀏覽量:
Kafka是一個高吞吐量的分布式發布訂閱消息系統,它在實時計算系統中有著非常強大的功能。通常情況下,使用Kafka構建系統或應用程序之間的數據管道,用來轉換或響應實時數據,使數據能夠及時地進行業務計算,得出相應結果。
Kafka是由Apache軟件基金會開發的一個開源流處理平臺,它使用Scala和Java語言編寫,是一個基于Zookeeper系統的分布式發布訂閱消息系統,該項目的設計初衷是為實時數據提供一個統一、高通量、低等待的消息傳遞平臺。在0.10版本之前,Kafka只是一個消息系統,主要用來解決應用解耦、異步消息等問題,在0.10版本之后,Kafka推出了連接器與流處理的功能,使其逐漸成為一個流式數據平臺。
ApacheKafka作為分布式消息系統,可以處理大量的數據,并能夠將消息從一個端點傳遞到另外一個端點。Kafka系統在大數據領域中的應用非常普遍,它能夠在離線和實時兩種大數據計算架構中處理數據,這得益于Kafka的眾多優點,其優點具體如下。
(1)解耦。Kafka具備消息系統的優點,只要生產者和消費者數據兩端遵循接口約束,就可以自行擴展或修改數據處理的業務過程。
(2)高吞吐量、低延遲。即使在非常廉價的機器上,Kafka也能做到每秒處理幾十萬條消息,而它的延遲最低只有幾毫秒。
(3)持久性。Kafka可以將消息直接持久化在普通磁盤上,且磁盤讀寫性能優異。
(4)擴展性。Kafka集群支持熱擴展,Kaka集群啟動運行后,用戶可以直接向集群添。
(5)容錯性。Kafka會將數據備份到多臺服務器節點中,即使Kafka集群中的某一臺加新的Kafka服務節點宕機,也不會影響整個系統的功能。
(6)支持多種客戶端語言。Kafka支持Java、.NET、PHP、Python等多種語言。
在大數據計算系統的開發場景中,若需要對接外部數據源時,就可以使用Kafka系統,如讀者熟悉的日志收集系統和消息系統,Kafka讀取日志系統中的數據,每得到一條數據,就可以及時地處理一條數據,這就是常見的流式計算框架。在流式計算框架中,Kafka一般用來緩存數據,它與Apache旗下的Spark、Storm等計算框架有著非常好的集成,這些計算框架可以接收Kafka中的緩存數據并進行計算,實時得出計算結果。
Kafka使用消費組(ConsumerGroup)的概念統一了點對點消息傳遞模式和發布訂閱消息傳遞模式,當Kafka使用點對點模式時,它可以將待處理的工作任務平均分配給消費組中的消費者成員;當使用發布訂閱模式時,它可以將消息廣播給多個消費組。Kafka采用多個消費組結合多個消費者,既可以擴展消息處理的能力,也允許消息被多個消費組訂閱。
猜你喜歡: