Apache頂級項目介紹2-Kafka_Kafka

來源:互聯網
上載者:User

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


Kafka官網是見過比較簡單,直敘的網站,“kafka是一個高吞吐的分布式的訊息系統”。 Kafka最初起家於LinkedIn,當時原本作為linkedin用來管理活動流(PV,使用者行為分析,搜尋情況)和運營資料處理的pipline的基礎。

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

kafka首先作為一個訊息系統,提供了準系統,如解耦,順序性,非同步性等。同時優質的設計理念支撐高吞吐,提供O(1)時間負責度持久化能力,資料層級達到TB/PB以上,支援離線與即時處理,即與hadoop,storm對接,支援水平scale out。


架構圖:


可以看到,kafka是一個分布式架構設計(當然DT時代,不支援水平scale out無法生存), 前段producer並發(支援批量)push訊息到kafka特定topic叢集伺服器broker,每個topic又包含多個partition便於水平擴充,消費者consumer通過consumer group向broker伺服器pull擷取訊息。kafka通過zk管理叢集配置,選舉leader,以及rebalance。訊息模式為push/pull。


我們來建一個kafka叢集服務:

通過zk發送,消費訊息:
用java來生產/消費訊息:


比較直白,這裡注意可以批量發送訊息,不是所有訊息中介軟體可以批量發送的,批量發送是高吞吐原因之一。



這裡使用stream流來消費payload,訊息流程迭代器用不停止,類似監聽訊息一樣。

kafka之所以高效或者其創新點:

訊息刪除管理
通常訊息中介軟體會消費一個訊息,刪除一個訊息,這使得訊息的使用代價非常高額。而kafka使用無狀態管理,引入訊息位移量,訊息基於時間的SLA應用保留原則,當訊息超過一定時間後才被刪除,這樣按照官網的說法,消費Kafka訊息就是非常輕量級:come and go. 聽起來像外賣一樣,take and go. 甚至,由於引入位移量,消費者可以隨意擷取任意位置訊息,包括重新擷取已經消費過的訊息。


2. Kafka利用linux sendfile從linux kernel複製檔案


3.kafka引入zk,管理分布式協調,HA,容錯。zk用來管理kafaka代理broker,當kafka新增或者某代理失效, zk服務將通知生產者與消費者。
4. 生產者效能,訊息結構最佳化大小以及批量發送



5. 消費這效能:訊息結構最佳化以及無狀態引入便宜量,無需為何b+樹索引。

總體來說kafka表現異常突出,不失為通常訊息中介軟體的代替品,如果管理hadoop,stream更是首推。另外如果處理網站日誌,使用者使用行為分析,或者離線處理log等都是不二之選。


好了,先到這裡了,起個大早來寫東西,果然不靠譜,時間緊任務重啊。望大家包涵,有些圖借用自網路。


@erixhao

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.