Kafka系列1-Kafka介紹 一.官網Kafka介紹 二.Kafka簡介 參考:

一.官網Kafka介紹

1.1 什麼是事件流?

事件流是相當於人體中樞神經系統的數字系統。它是“永遠在線”世界的技術基礎,在這個世界裏,企業越來越多地由軟件定義和自動化,軟件的用戶也更多地是軟件。

從技術上講,事件流是指以事件流的形式從數據庫、傳感器、移動設備、雲服務和軟件應用等事件源實時捕獲數據的實踐;持久地存儲這些事件流以備以後檢索;實時和回顧性地操作、處理和響應事件流;並根據需要將事件流路由到不同的目的地技術。因此,事件流確保了數據的連續流動和解釋,從而使正確的信息在正確的地點、正確的時間出現。

1.2 我可以使用事件流做什麼?

事件流應用於衆多行業和組織的各種用例。它的許多例子包括:

  1. 實時處理支付和金融交易,如股票交易所、銀行和保險。
  2. 實時跟蹤和監控汽車、卡車、車隊和運輸,如物流和汽車行業。
  3. 持續捕獲和分析來自物聯網設備或其他設備的傳感器數據,如工廠和風電場。
  4. 收集並立即響應客戶的互動和訂單,如零售、酒店和旅遊行業,以及移動應用程序。
  5. 監測住院病人,預測病情變化,確保在緊急情況下及時治療。
  6. 連接、存儲公司不同部門產生的數據並使其可用。
  7. 作爲數據平臺、事件驅動架構和微服務的基礎。

1.3 Apache Kafka®是一個事件流平臺。這是什麼意思?

Kafka結合了三個關鍵的功能,所以你可以用一個單一的戰鬥測試解決方案來實現端到端事件流的用例:

  1. 發佈(寫)和訂閱(讀)事件流,包括從其他系統連續導入/導出數據。
  2. 持久性和可靠地存儲事件流,只要你想。
  3. 在事件發生或回顧時處理事件流。

所有這些功能都是以分佈式、高度可伸縮、彈性、容錯和安全的方式提供的。Kafka可以部署在裸金屬硬件、虛擬機和容器上,也可以部署在雲上。您可以選擇自管理您的Kafka環境和使用由各種供應商提供的完全管理的服務。

1.4 簡而言之,Kafka是如何工作的?

Kafka是一個分佈式系統,由服務器和客戶端組成,通過高性能的TCP網絡協議進行通信。它可以部署在裸金屬硬件、虛擬機和內部環境中的容器上,也可以部署在雲環境中。

服務器:Kafka作爲一個集羣運行一個或多個服務器,可以跨越多個數據中心或雲區域。其中一些服務器構成存儲層,稱爲代理。其他服務器運行Kafka Connect來持續導入和導出數據作爲事件流,將Kafka與您現有的系統集成,如關係數據庫以及其他Kafka集羣。爲了讓你實現關鍵任務的用例,Kafka集羣具有高度的可擴展性和容錯性:如果它的任何一個服務器發生故障,其他服務器將接管它們的工作,以確保持續的操作而不丟失任何數據。

客戶機:它們允許您編寫分佈式應用程序和微服務,這些應用程序和微服務可以並行地、大規模地讀取、寫入和處理事件流,甚至在出現網絡問題或機器故障的情況下也可以容錯。Kafka附帶了一些這樣的客戶端,這些客戶端被Kafka社區提供的幾十個客戶端增強了:客戶端可以用於Java和Scala,包括更高級別的Kafka Streams庫,用於Go、Python、C/ c++和許多其他編程語言以及REST api。

1.5 主要概念和術語

事件記錄了在世界上或你的企業中“發生了某事”的事實。在文檔中也稱爲記錄或消息。當你讀或寫數據到Kafka時,你以事件的形式做這件事。從概念上講,事件具有鍵、值、時間戳和可選的元數據頭。下面是一個例子:

  1. 活動重點:“愛麗絲”
  2. 事件值:“向Bob支付200美元”
  3. 事件時間戳:“2020年6月25日下午2:06。”

生產者是那些向Kafka發佈(寫)事件的客戶端應用程序,而消費者是那些訂閱(讀和處理)這些事件的應用程序。在Kafka中,生產者和消費者是完全解耦的,彼此是不可知的,這是實現Kafka聞名的高可擴展性的一個關鍵設計元素。例如,生產者從不需要等待消費者。Kafka提供了各種各樣的保證,比如精確處理一次事件的能力。

事件被組織並持久地存儲在主題中。很簡單,一個主題類似於文件系統中的一個文件夾,事件就是該文件夾中的文件。一個示例主題名稱可以是“payments”。Kafka中的主題總是多生產者和多訂閱者:一個主題可以有0個、1個或多個生產者向它寫入事件,也可以有0個、1個或多個消費者訂閱這些事件。主題中的事件可以根據需要經常讀取——與傳統消息傳遞系統不同,事件在使用後不會刪除。相反,你可以通過每個主題的配置設置來定義Kafka應該保留你的事件多長時間,之後舊的事件將被丟棄。Kafka的性能相對於數據大小來說是不變的,所以長時間存儲數據是完全可以的。

主題是分區的,這意味着一個主題分散在位於不同Kafka broker上的多個“桶”上。這種數據的分佈式位置對於可伸縮性非常重要,因爲它允許客戶機應用程序同時從/向多個代理讀取和寫入數據。當一個新事件被髮布到一個主題時,它實際上被附加到主題的一個分區中。具有相同事件鍵(例如,客戶或車輛ID)的事件被寫入同一個分區,Kafka保證任何給定主題分區的消費者都將始終以寫入的完全相同的順序讀取該分區的事件。


讓你的數據容錯和可用性,每一個主題可以被複制,甚至跨geo-regions或數據中心,這樣總有多個經紀人有一份數據以防出錯,你想做代理維護,等等。一個常見的生產設置是複製因子3,也就是說,您的數據總是有三個副本。這個複製是在主題分區級別執行的。

二.Kafka簡介

Kafka是一種消息隊列,主要用來處理大量數據狀態下的消息隊列,一般用來做日誌的處理。既然是消息隊列,那麼Kafka也就擁有消息隊列的相應的特性了。

消息隊列的好處

  1. 解耦合
    耦合的狀態表示當你實現某個功能的時候,是直接接入當前接口,而利用消息隊列,可以將相應的消息發送到消息隊列,這樣的話,如果接口出了問題,將不會影響到當前的功能。


  2. 異步處理
    異步處理替代了之前的同步處理,異步處理不需要讓流程走完就返回結果,可以將消息發送到消息隊列中,然後返回結果,剩下讓其他業務處理接口從消息隊列中拉取消費處理即可。

  3. 流量削峯
    高流量的時候,使用消息隊列作爲中間件可以將流量的高峯保存在消息隊列中,從而防止了系統的高請求,減輕服務器的請求處理壓力。

2.1 Kafka消費模式

Kafka的消費模式主要有兩種:一種是一對一的消費,也即點對點的通信,即一個發送一個接收。第二種爲一對多的消費,即一個消息發送到消息隊列,消費者根據消息隊列的訂閱拉取消息消費。

一對一

消息生產者發佈消息到Queue隊列中,通知消費者從隊列中拉取消息進行消費。消息被消費之後則刪除,Queue支持多個消費者,但對於一條消息而言,只有一個消費者可以消費,即一條消息只能被一個消費者消費。

一對多

這種模式也稱爲發佈/訂閱模式,即利用Topic存儲消息,消息生產者將消息發佈到Topic中,同時有多個消費者訂閱此topic,消費者可以從中消費消息,注意發佈到Topic中的消息會被多個消費者消費,消費者消費數據之後,數據不會被清除,Kafka會默認保留一段時間,然後再刪除。

2.2 Kafka的基礎架構

Kafka像其他Mq一樣,也有自己的基礎架構,主要存在生產者Producer、Kafka集羣Broker、消費者Consumer、註冊消息Zookeeper.

  1. Producer:消息生產者,向Kafka中發佈消息的角色。
  2. Consumer:消息消費者,即從Kafka中拉取消息消費的客戶端。
  3. Consumer Group:消費者組,消費者組則是一組中存在多個消費者,消費者消費Broker中當前Topic的不同分區中的消息,消費者組之間互不影響,所有的消費者都屬於某個消費者組,即消費者組是邏輯上的一個訂閱者。某一個分區中的消息只能夠一個消費者組中的一個消費者所消費
  4. Broker:經紀人,一臺Kafka服務器就是一個Broker,一個集羣由多個Broker組成,一個Broker可以容納多個Topic。
  5. Topic:主題,可以理解爲一個隊列,生產者和消費者都是面向一個Topic
  6. Partition:分區,爲了實現擴展性,一個非常大的Topic可以分佈到多個Broker上,一個Topic可以分爲多個Partition,每個Partition是一個有序的隊列(分區有序,不能保證全局有序)
  7. Replica:副本Replication,爲保證集羣中某個節點發生故障,節點上的Partition數據不丟失,Kafka可以正常的工作,Kafka提供了副本機制,一個Topic的每個分區有若干個副本,一個Leader和多個Follower
  8. Leader:每個分區多個副本的主角色,生產者發送數據的對象,以及消費者消費數據的對象都是Leader。
  9. Follower:每個分區多個副本的從角色,實時的從Leader中同步數據,保持和Leader數據的同步,Leader發生故障的時候,某個Follower會成爲新的Leader。

上述一個Topic會產生多個分區Partition,分區中分爲Leader和Follower,消息一般發送到Leader,Follower通過數據的同步與Leader保持同步,消費的話也是在Leader中發生消費,如果多個消費者,則分別消費Leader和各個Follower中的消息,當Leader發生故障的時候,某個Follower會成爲主節點,此時會對齊消息的偏移量。

參考:

  1. https://kafka.apache.org/intro
  2. https://blog.csdn.net/cao1315020626/article/details/112590786?spm=1001.2014.3001.5501
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章