快速入門大資料訊息中介軟體

@haikuotiankong發表於2021-01-04

概 述

Kafka是最初由Linkedin公司開發,是一個分散式、分割槽的、多副本的、多訂閱者,基於zookeeper協調的分散式日誌系統(也可以當做MQ系統),常見可以用於web/nginx日誌、訪問日誌,訊息服務等等,Linkedin於2010年貢獻給了Apache基金會併成為頂級開源專案。 主要應用場景是:日誌收集系統和訊息系統。

釋出-訂閱訊息傳遞模式

在 Kafka 學習的時候,你首先要知道釋出訂閱的物件是主題(Topic)。向主題釋出訊息的客戶端應用程式稱為(Producer),生產者程式通常持續不斷地向一個或多個主題傳送訊息,而訂閱這些主題訊息的客戶端應用程式就被稱為(Consumer)。和生產者類似,消費者也能夠同時訂閱多個主題的訊息。我們把生產者和消費者統稱為客戶端(Clients)。你可以同時執行多個生產者和消費者例項,這些例項會不斷地向 Kafka 叢集中的多個主題生產和消費訊息。

在 Kafka 中,釋出訂閱的物件是主題(Topic),你可以為每個業務、每個應用甚至是每類資料都建立專屬的主題。向主題釋出訊息的客戶端應用程式稱為生產者(Producer),生產者程式通常持續不斷地向一個或多個主題傳送訊息,而訂閱這些主題訊息的客戶端應用程式就被稱為消費者(Consumer)。和生產者類似,消費者也能夠同時訂閱多個主題的訊息。我們把生產者和消費者統稱為客戶端(Clients)。你可以同時執行多個生產者和消費者例項,這些例項會不斷地向 Kafka 叢集中的多個主題生產和消費訊息。

在 Kafka 中,釋出訂閱的物件是主題(Topic),你可以為每個業務、每個應用甚至是每類資料都建立專屬的主題。向主題釋出訊息的客戶端應用程式稱為生產者(Producer),生產者程式通常持續不斷地向一個或多個主題傳送訊息,而訂閱這些主題訊息的客戶端應用程式就被稱為消費者(Consumer)。和生產者類似,消費者也能夠同時訂閱多個主題的訊息。我們把生產者和消費者統稱為客戶端(Clients)。你可以同時執行多個生產者和消費者例項,這些例項會不斷地向 Kafka 叢集中的多個主題生產和消費訊息。

kafka的優點

1、解耦 2、冗餘(持久化) 3、非同步通訊 4、快取 。。。。

什麼是消費者組

1、定義:即消費者組是 Kafka 提供的可擴充套件且具有容錯性的消費者機制。

2、原理:在 Kafka 中,消費者組是一個由多個消費者例項 構成的組。多個例項共同訂閱若干個主題,實現共同消費。同一個組下的每個例項都配置有 相同的組 ID,被分配不同的訂閱分割槽。當某個例項掛掉的時候,其他例項會自動地承擔起 它負責消費的分割槽。

設定 Kafka 能接收的最大訊息的大小

  • Broker 端引數:message.max.bytes、max.message.bytes(主題級別)和 replica.fetch.max.bytes。

  • Consumer 端引數:fetch.message.max.bytes。

監控 Kafka 的框架

  • Kafka Manager:應該算是最有名的專屬 Kafka 監控框架了,是獨立的監控系統。
  • Kafka Monitor:LinkedIn 開源的免費框架,支援對叢集進行系統測試,並實時監控測 試結果。
  • CruiseControl:也是 LinkedIn 公司開源的監控框架,用於實時監測資源使用率,以及 提供常用運維操作等。無 UI 介面,只提供 REST API。
  • JMX 監控:由於 Kafka 提供的監控指標都是基於 JMX 的,因此,市面上任何能夠整合 JMX 的框架都可以使用,比如 Zabbix 和 Prometheus。
  • 已有大資料平臺自己的監控體系:像 Cloudera 提供的 CDH 這類大資料平臺,天然就提 供 Kafka 監控方案。
  • JMXTool:社群提供的命令列工具,能夠實時監控 JMX 指標。答上這一條,屬於絕對 的加分項,因為知道的人很少,而且會給人一種你對 Kafka 工具非常熟悉的感覺。

名詞術語

1、訊息:Record。Kafka 是訊息引擎嘛,這裡的訊息就是指 Kafka 處理的主要物件。

2、主題:Topic。主題是承載訊息的邏輯容器,在實際使用中多用來區分具體的業務。

3、分割槽:Partition。一個有序不變的訊息序列。每個主題下可以有多個分割槽。

4、訊息位移:Offset。表示分割槽中每條訊息的位置資訊,是一個單調遞增且不變的值。

5、副本:Replica。Kafka 中同一條訊息能夠被拷貝到多個地方以提供資料冗餘,這些地方就是所謂的副本。副本還分為領導者副本和追隨者副本,各自有不同的角色劃分。副本是在分割槽層級下的,即每個分割槽可配置多個副本實現高可用。

6、生產者:Producer。向主題釋出新訊息的應用程式。

7、消費者:Consumer。從主題訂閱新訊息的應用程式。消費者位移:Consumer Offset。表徵消費者消費進度,每個消費者都有自己的消費者位移。消費者組:Consumer Group。多個消費者例項共同組成的一個組,同時消費多個分割槽以實現高吞吐。

部落格地址

https://blog.csdn.net/weixin_41563161

本文由部落格群發一文多發等運營工具平臺 OpenWrite 釋出

相關文章