溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Apache頂級項目介紹2-Kafka

發(fā)布時間:2020-07-07 04:43:08 來源:網(wǎng)絡(luò) 閱讀:450 作者:erixhao 欄目:大數(shù)據(jù)

Apache頂級項目介紹2-Kafka
 

 

 

Apache頂級項目介紹系列-1,我們從Kafka說起。why?流行 + 名字cool。

Kafka官網(wǎng)是見過比較簡單,直敘的網(wǎng)站,“kafka是一個高吞吐的分布式的消息系統(tǒng)”。 Kafka最初起家于LinkedIn,當時原本作為linkedin用來管理活動流(PV,用戶行為分析,搜索情況)和運營數(shù)據(jù)處理的pipline的基礎(chǔ)。

因為其分布式以及高吞吐被廣泛使用,如與Cloudera, Hadoop, Storm, Spark etc.

kafka首先作為一個消息系統(tǒng),提供了基本功能,如解耦,順序性,異步性等。同時優(yōu)質(zhì)的設(shè)計理念支撐高吞吐,提供O(1)時間負責(zé)度持久化能力,數(shù)據(jù)級別達到TB/PB以上,支持離線與實時處理,即與hadoop,storm對接,支持水平scale out。

架構(gòu)圖:


Apache頂級項目介紹2-Kafka
 可以看到,kafka是一個分布式架構(gòu)設(shè)計(當然DT時代,不支持水平scale out無法生存), 前段producer并發(fā)(支持批量)push消息到kafka特定topic集群服務(wù)器broker,每個topic又包含多個partition便于水平擴展,消費者consumer通過consumer group向broker服務(wù)器pull獲取消息。kafka通過zk管理集群配置,選舉leader,以及rebalance。消息模式為push/pull。

我們來建一個kafka集群服務(wù):


Apache頂級項目介紹2-Kafka
通過zk發(fā)送,消費消息:

Apache頂級項目介紹2-Kafka
用java來生產(chǎn)/消費消息:

Apache頂級項目介紹2-Kafka

比較直白,這里注意可以批量發(fā)送消息,不是所有消息中間件可以批量發(fā)送的,批量發(fā)送是高吞吐原因之一。

這里使用stream流來消費payload,消息流迭代器用不停止,類似監(jiān)聽消息一樣。

kafka之所以高效或者其創(chuàng)新點:

  1. 消息刪除管理 通常消息中間件會消費一個消息,刪除一個消息,這使得消息的使用代價非常高額。而kafka使用無狀態(tài)管理,引入消息偏移量,消息基于時間的SLA應(yīng)用保留策略,當消息超過一定時間后才被刪除,這樣按照官網(wǎng)的說法,消費Kafka消息就是非常輕量級:come and go. 聽起來像外賣一樣,take and go. 甚至,由于引入偏移量,消費者可以隨意獲取任意位置消息,包括重新獲取已經(jīng)消費過的消息。

  
Apache頂級項目介紹2-Kafka

2. Kafka利用linux sendfile從linux kernel復(fù)制文件


Apache頂級項目介紹2-Kafka

3.kafka引入zk,管理分布式協(xié)調(diào),HA,容錯。zk用來管理kafaka代理broker,當kafka新增或者某代理失效,zk服務(wù)將通知生產(chǎn)者與消費者。
 
Apache頂級項目介紹2-Kafka

4. 生產(chǎn)者性能,消息結(jié)構(gòu)優(yōu)化大小以及批量發(fā)送

 


Apache頂級項目介紹2-Kafka
 5. 消費這性能:消息結(jié)構(gòu)優(yōu)化以及無狀態(tài)引入便宜量,無需為何b+樹索引。
Apache頂級項目介紹2-Kafka

總體來說kafka表現(xiàn)異常突出,不失為通常消息中間件的代替品,如果管理hadoop,stream更是首推。另外如果處理網(wǎng)站日志,用戶使用行為分析,或者離線處理log等都是不二之選。

 

好了,先到這里了,起個大早來寫東西,果然不靠譜,時間緊任務(wù)重啊。望大家包涵,有些圖借用自網(wǎng)絡(luò)。

 

公眾號:技術(shù)極客TechBooster


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI