Kafka學習 一 Kafka背景及架構介紹

2021-07-10 11:59:49 字數 2744 閱讀 8167

kafka是分布式發布-訂閱訊息系統。它最初由linkedin公司開發,使用scala語言編寫,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,多訂閱者,冗餘備份的永續性的日誌服務它主要用於處理活躍的流式資料(實時性的計算)。

降低系統組網複雜度。

降低程式設計複雜度,各個子系統不在是相互協商介面,各個子系統類似插口插在插座上,kafka承擔高速資料匯流排的作用。

二.kafka的主要特點

同時為發布和訂閱提供高吞吐量。據了解,kafka每秒可以生產約25萬訊息(50 mb),每秒處理55萬訊息(110 mb)。

可進行持久化操作。將訊息持久化到磁碟,因此可用於批量消費,例如etl,以及實時應用程式。通過將資料持久化到硬碟以及replication防止資料丟失。

分布式系統,易於向外擴充套件,可以和zookeeper結合。所有的producer、broker和consumer都會有多個,均為分布式的。無需停機即可擴充套件機器。

訊息被處理的狀態是在consumer端維護,而不是由server端維護。當失敗時能自動平衡。

支援online和offline的場景。

可以通過訊息佇列做系統之間的通訊,即系統之間的相互協調和呼叫

注意:使用訊息佇列和soa架構的區別?

1.soa是直接呼叫的(可以通過rpc和httpclient來直接呼叫)

2.使用訊息佇列是通過訊息的傳遞,來完成兩個系統之間的整合和呼叫

帶來的好處:

例子:訂單處理

訂單支付成功的方法()

注:

1.原來系統中這個三個步驟要同時處理後再返回,這樣比較耗時;

2.現在可以先處理使用者最關心的,最急需看到的修改訂單狀態成功資訊,這樣可以先處理

"修改訂單狀態"

,然後立刻返回給使用者,

後面的

「計算會員積分」,「通知物流進行配送」,放入訊息佇列中交給後面的系統繼續處理。

訊息佇列的分類:點對點,發布/訂閱

1.點對點

訊息生產者生產訊息傳送到queue

中,然後

訊息消費者從queue中取出

並且消費訊息

注意(缺點):

1.訊息

被消費以後,

queue中不再有儲存

,所以消費者不可肯消費到已經被消費的訊息。

2.queue中

支援存在多個消費者

,但是對乙個訊息而言,

只會有乙個消費者可以消費。

(當乙個系統消費了該個訊息後,其他的系統不能再消費了)

2.發布/訂閱(最常用的)

訊息生產者(發布)將訊息發布到topic中,同時有多個訊息消費者(訂閱)消費該訊息。和點對點方式不同,發布到topic的訊息會被所有訂閱的消費者消費。

1.rabbitmq:支援的協議多,非常

重量級訊息佇列

路由(routing),負載均衡(load balance)或者資料持久化

都有很好的支援。

2.zeromq:號稱最快的訊息佇列系統,尤其針對大吞吐量的需求場景,擅長的高階/複雜的佇列,但是技術也複雜,並且只提供非永續性的佇列。

3.activemq(jms的實現):apache下的乙個子項,類似zeromq,能夠以**人和點對點的技術實現佇列 。

4.redis:是乙個key-value的nosql資料庫,但也支援mq功能,資料量較小,效能優於rabbitmq,資料超過10k就慢的無法忍受。

注:訊息佇列不可能是單點的,也需要集群。這樣就涉及到了,負載均衡和訊息的持久化

六.kafka的測試效果

Kafka學習 一 Kafka背景及架構介紹

kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,使用scala語言編寫,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,多訂閱者,冗餘備份的永續性的日誌服務。它主要用於處理活躍的流式資料 實時性的計算 降低系統組網複雜度。降低程式設計複雜度,各個子系統不...

Kafka 溫故 一 Kafka背景及架構介紹

kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,使用scala語言編寫,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,多訂閱者,冗餘備份的永續性的日誌服務。它主要用於處理活躍的流式資料 實時性的計算 1.降低系統組網複雜度。2.降低程式設計複雜度,各個...

學習kafka教程(一)

簡介 kafka是用於構建實時資料管道和流應用程式。具有橫向擴充套件,容錯,wicked fast 快 等優點,並已在成千上萬家公司執行。目標相關概念 producer 生產者,就是它來生產 叉燒包 的飯堂阿姨。consumer 消費者,生產出來的 叉燒包 它來消費。topic 你把它理解為標籤,生...