KAFKA基礎(一) KAFKA 概述

2022-05-07 22:42:16 字數 2809 閱讀 1914

kafka

是乙個分布式的基於發布

/訂閱模式的訊息佇列(

message

queue

),主要應用於大資料實時處理領域。

2.1傳統訊息佇列的應用場景

使用訊息佇列的好處

1)解耦

允許你獨立的擴充套件或修改兩邊的處理過程,只要確保它們遵守同樣的介面約束。

2)可恢復性

系統的一部分元件失效時,不會影響到整個系統。訊息佇列降低了程序間的耦合度,所以即使乙個處理訊息的程序掛掉,加入佇列中的訊息仍然可以在系統恢復後被處理。

3)緩衝

有助於控制和優化資料流經過系統的速度,解決生產訊息和消費訊息的處理速度不一致的情況。

4)靈活性 & 峰值處理能力

在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這樣的突發流量並不常見。如果為以能處理這類峰值訪問為標準來投入資源隨時待命無疑是巨大的浪費。使用訊息佇列能夠使關鍵元件頂住突發的訪問壓力,而不會因為突發的超負荷的請求而完全崩潰。

5)非同步通訊

很多時候,使用者不想也不需要立即處理訊息。訊息佇列提供了非同步處理機制,允許使用者把乙個訊息放入佇列,但並不立即處理它。想向佇列中放入多少訊息就放多少,然後在需要的時候再去處理它們。

訊息佇列內部實現原理

2.2訊息佇列的兩種模式

(1)點對點模式(一對一,消費者主動拉取資料,訊息收到後訊息清除)

點對點模型通常是乙個基於拉取或者輪詢的訊息傳送模型,這種模型從佇列中請求資訊,而不是將訊息推送到客戶端。這個模型的特點是傳送到佇列的訊息被乙個且只有乙個接收者接收處理,即使有多個訊息監聽者也是如此。

(2)發布/訂閱模式(一對多,資料生產後,推送給所有訂閱者)

發布訂閱模型則是乙個基於推送的訊息傳送模型。發布訂閱模型可以有多種不同的訂閱者,臨時訂閱者只在主動監聽主題時才接收訊息,而持久訂閱者則監聽主題的所有訊息,即

使當前訂閱者不可用,處於離線狀態。

在流式計算中,kafka 一般用來快取資料,storm 通過消費 kafka 的資料進行計算。

1)apache kafka 是乙個開源訊息系統,由 scala 寫成。是由 apache 軟體**會開發的乙個開源訊息系統專案。

2)kafka 最初是由 linkedin 公司開發,並於 2011 年初開源。2012 年 10 月從 apacheincubator 畢業。該項目的目標是為處理實時資料提供乙個統

一、高通量、低等待的平台。

3)kafka 是乙個分布式訊息佇列。kafka 對訊息儲存時根據 topic 進行歸類,傳送訊息者稱為 producer,訊息接受者稱為 consumer,此外 kafka 集群有多個 kafka 例項組成,每個例項(server)稱為 broker。

4)無論是 kafka 集群,還是 consumer 都依賴於 zookeeper 集群儲存一些 meta 資訊,來保證系統可用性。

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

2)consumer :訊息消費者,向 kafka broker 取訊息的客戶端;

3)consumer group (cg):消費者組,由多個 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。

8)leader:每個分割槽多個副本的「主」,生產者傳送資料的物件,以及消費者消費資料的物件都是 leader。

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

10)record: 實際寫入 kafka 中並可以被讀取的訊息記錄。每個 record 包含了 key、value 和 timestamp。

Kafka基礎 Kafka架構

目錄kakfa 架構 kafka最初是由linkedin公司採用scala語言開發的乙個多分割槽 多副本並且基於zookeeper協調的分布式訊息系統,現在已經捐獻給了apache 會。目前kafka已經定位為乙個分布式流式處理平台,它以 高吞吐 可持久化 可水平擴充套件 支援流處理等多種特性而被廣...

kafka簡要概述

生產者種類多,資料格式不同,資料來源眾多,消費者種類多 使用生產者和消費者模式進行解耦 消費者無法依據自身處理情況輪詢拉取資料 提供資料持久化,適配多個消費者 訊息系統無法橫向擴充套件 系統隨流量進行很想擴充套件,使用訊息批次加壓縮的模式提高訊息傳輸效率通過主題對訊息進行分類 配置項 partiti...

訊息佇列(一) Kafka概述

iwehdio的 學習自 訊息佇列有什麼使用場景?消費者怎麼從訊息佇列裡邊得到資料?引入訊息佇列會產生什麼問題?重複消費 如何保證介面冪等 弱校驗 順序消費 kafka為了擁有更強大的功能,提供了四大核心介面 topics producers consumers 訊息在kafka中的處理歷程 訊息生...