kafka kafaka介紹

2022-08-05 11:27:10 字數 3364 閱讀 2545

首先了解一下訊息佇列。

對於傳統訊息佇列,遇到下述情況,可以使用訊息佇列進行改造。

那麼使用訊息佇列的好處?

1.解耦,可以獨立擴充套件以及修改兩邊的處理過程,只需要確保介面的一致性即可, 

2.可恢復性,當系統中一部分元件失效時候,不會影響整個系統,訊息佇列降低了程式之間的耦合度,因此當處理訊息的程序掛掉,加入佇列中的訊息仍然可以在系統恢復之後被處理

舉個例子:對於電商系統的訂購,對於常規操作,可能訂單系統在在呼叫庫存系統時,由於庫存系統故障,導致訂單建立失敗,訂單系統與庫存系統高度耦合

那麼引入訊息佇列,訂單系統建立訂單完成之後,將減少庫存放入訊息佇列中,就算庫存系統崩潰,訂單系統也可以完成建立,並且在庫存系統啟動之後讀取訊息佇列中的資訊,完成較少庫存任務。

3.流量削峰,在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這個突發流量並不常見,如果以能處理這類的訪問標準來投入資源隨時待命,這就是巨大的浪費,當然對於可預見的比如雙十一,這個增加應用的副本數量無疑對使用者體檢以及訪問速度會提升很多。對於這種情況,訊息佇列可以換件短時間內高流量壓垮應用。

舉個例子,例如秒殺活動,有時候會瞬間帶來超大的使用者訪問量,這個時候容易造成伺服器癱瘓,這個時候引入訊息佇列,秒殺系統逐步處理訊息佇列中情況,可以短時間緩解系統壓力

4.非同步通訊,有時候對於產生出的訊息,使用者並不想立即進行處理,這個石斛可以放入訊息佇列中,以後想處理的時候在進行處理。

訊息佇列分為兩種模式:

1.點對點模式,也即是p2p(point to point)

這種模式分為三個角色:訊息佇列(message queue),生產者(producer),消費者(consumer),每個訊息傳送到特定佇列,消費者從佇列中獲取訊息,直到被消費或者超時

也就是說訊息被消費之後,訊息佇列中不再儲存訊息,所以消費者不可能消費者已經被消費的訊息。

2. 釋出/訂閱模式,也就是pub/sub模式

這個包含三個角色:主題(topic),生產者(producer),消費者(consumer)。多個消費者可以將訊息傳送到topic中,系統將這些訊息傳遞給多個消費者。

發不到topic的訊息會被所有的訂閱者消費

kafka就是一個釋出訂閱的模式。看一下kafka的官方介紹

kafka是一個分散式流資料處理平臺,那麼流資料處理平臺一般都有下述三個特性

1.可以釋出以及訂閱流式的記錄

2.儲存流式的記錄,並且有較好的容錯性

3.在流式記錄產生時就進行處理

那麼kafka一般適用於的應用類別:

1.構造實時流資料管道,可以在系統或者應用之間可靠的獲取資料

2.構建實時流式應用程式,對這些流資料進行轉換或者影響。

kafka的概念:

1.kafka作為一個叢集,執行在一臺或者多臺伺服器上

2.kafka通過topic對儲存的流資料進行分類

3.每條記錄包含一個key,一個value和一個timestamp(時間戳)

kafka的四個核心api:

1. the producer api 允許一個應用程式釋出一串流式的資料到一個或者多個kafka topic

2.the consumer api 允許一個應用程式訂閱一個或多個topic,並且對釋出給他們的流式資料進行處理

3.the streams api 允許一個應用程式作為一個流處理器,消費一個或者多個topic產生的輸入流,然後生產一個輸出流到一個或者多個topic中去,在輸入輸出流中進行有效的轉換

4.the connector api 允許構建並執行可重用的生產者或消費者,將kafka topics連線到已存在的應用程式揮著資料吸用。比如連線到一個關係型資料庫,捕捉表的所有變更內容。

kafka客戶端以及服務端通訊使用的是簡單,高效能支援多語言的tcp協議 。

kafka的基礎架構:

1.producer:訊息生產者,也就是向kafka broker發訊息的客戶端

2.consumer:訊息消費者,從kafka broker中去訊息的客戶端

3.consumer group:消費者組,由多個consumer組成。消費這組內每個消費者負責消費不同分割槽的資料,一個分割槽只能由一個組內消費者消費,消費組之間互不影響。所有的消費者都屬於某個消費組,也就是消費者組在邏輯上其實是一個訂閱者

4.broker:一臺kafka伺服器就是一個broker,一個叢集由多個broker組成,一個broker可以融安多個topic

5.topic:相當於一個佇列,生產者以及消費者面向的都是一個topic

6.partition:分割槽。主要是為了實現可擴充套件性,一個非常大的topic可以分佈到多個broker上,一個topic可以分為多個partition,每個partition都是一個有序的佇列

7.replica:副本,為保證叢集中的某個節點發生故障,這個節點的partition資料不對事,並且kafka仍可以進行正常工作,kafka提供了副本機制,一個topic的每個分割槽可以有若干個副本,一個leader和若干個follower,leader與follower不再同一個伺服器上,部署在一個伺服器上沒有意義,因此副本數量加上leader一般小於等於伺服器數量

8.leader:每個分割槽多個副本的“主”,生產這傳送資料的物件,以及消費者消暑資料的物件都是leader

9.follower:每個分割槽多個副本的“從”,實時從leader中同步資料,保持和leader資料的同步。leader發生故障是,某個follower會成為新的leader。

springboot整合kafaka

org springframework kafka spring kafka org springframework kafka spring kafka test test spring kafka 指定kafkaserver的地址,叢集配多個,中間,逗號隔開 bootstrap servers ...

kafaka學習筆記

問題 兩個模組a b a生產訊息,b消費訊息,當a的速度 大於b的速度,a模組產生的資料的阻塞,有剩餘,對資料得處理有一定的影響。 解決方案 新加模組c 。a發資料c c將資料發給b。 速度定義 分散式的訊息訂閱系統。優點 高可擴充套件,高容錯,分散式。 缺點 複雜,訊息錯亂,重複訊息。 分散式,可分割槽...

訊息系統 kafaka

broker kafka叢集包含一個或多個伺服器,這種伺服器被稱為broker producer 訊息生產者,負責釋出訊息到kafka broker consumer 訊息消費者,向kafka broker讀取訊息的客戶端 每個partition會建立3個備份replica 並分配到broker叢集...