1. 程式人生 > >kafka簡單介紹

kafka簡單介紹

Kafka 是一個訊息系統,原本開發自 LinkedIn,用作 LinkedIn 的活動流(Activity Stream)和運營資料處理管道(Pipeline)的基礎

使用kafka的優勢:實現瞭解耦合

  • Kafka 專用術語

Broker:Kafka 叢集包含一個或多個伺服器,這種伺服器被稱為 broker。(多個broker解決負載問題,當然也可以只有一個broker)

Topic:每條釋出到 Kafka 叢集的訊息都有一個類別,這個類別被稱為 Topic。(物理上不同 Topic 的訊息分開儲存,邏輯上一個 Topic 的訊息雖然保存於一個或多個 broker 上,但使用者只需指定訊息的 Topic 即可生產或消費資料而不必關心資料存於何處)。

Partition:Partition 是物理上的概念,每個 Topic 包含一個或多個 Partition。

Producer:負責釋出訊息到 Kafka broker。(可以是其他元件也可以是自定義的服務等,只要需要訊息傳遞都可以使用)

Consumer:訊息消費者,向 Kafka broker 讀取訊息的客戶端。

Consumer Group:每個 Consumer 屬於一個特定的 Consumer Group(可為每個 Consumer 指定 group name,若不指定 group name 則屬於預設的 group)。

Kafka各元件說明

Broker

每個kafka server稱為一個Broker,多個borker組成kafka cluster。

 

一個機器上可以部署一個或者多個Broker,這多個Broker連線到相同的ZooKeeper就組成了Kafka叢集。

Topic

Kafka是一個釋出訂閱訊息系統,它的邏輯結構如下:

 

Topic 就是訊息類別名,一個topic中通常放置一類訊息。每個topic都有一個或者多個訂閱者,也就是訊息的消費者consumer。

Producer將訊息推送到topic,由訂閱該topic的consumer從topic中拉取訊息。

Topic 與broker

一個Broker上可以建立一個或者多個Topic。同一個topic可以在同一叢集下的多個Broker中分佈。

 

Partition log

Kafka會為每個topic維護了多個分割槽(partition),每個分割槽會對映到一個邏輯的日誌(log)檔案:

 

每當一個message被髮布到一個topic上的一個partition,broker應會將該message追加到這個邏輯log檔案的最後一個segment上。這些segments 會被flush到磁碟上。Flush時可以按照時間來進行,也可以按照message 數來執行。

每個partition都是一個有序的、不可變的結構化的提交日誌記錄的序列。在每個partition中每一條日誌記錄都會被分配一個序號——通常稱為offset,offset在partition內是唯一的。論點邏輯檔案會被化分為多個檔案segment(每個segment的大小一樣的)。

         Broker叢集將會保留所有已釋出的message records,不管這些訊息是否已被消費。保留時間依賴於一個可配的保留週期。例如:如果設定了保留策略是2day,那麼每一條訊息釋出兩天內是被保留的,在這個2day的保留時間內,訊息是可以被消費的。過期後不再保留。

 

Partition distribution

日誌分割槽是分散式的存在於一個kafka叢集的多個broker上。每個partition會被複制多份存在於不同的broker上。這樣做是為了容災。具體會複製幾份,會複製到哪些broker上,都是可以配置的。經過相關的複製策略後,每個topic在每個broker上會駐留一到多個partition。如圖:

 

如果要了解kafka如何進行partition、replica 分配的,可以參考:

相關推薦

kafka簡單介紹

Kafka 是一個訊息系統,原本開發自 LinkedIn,用作 LinkedIn 的活動流(Activity Stream)和運營資料處理管道(Pipeline)的基礎 使用kafka的優勢:實現瞭解耦合 Kafka 專用術語 Broker:Kaf

Kafka簡單介紹與使用,生產者和消費者的JavaApi

一、簡介 2、實時流資料管道,可以在 3、構建流式引用 4、是一個分散式流式處理平臺, 統稱訊息佇列或訊息中介軟體,有生產者和消費者之分 消費者去kafka中拉資料(而不是kafka給資料) 其實kafka就是一個臨時儲存的外掛,但是這個外掛效能很強大 kafka 是用scala編譯的 0.

kafka簡單介紹

kafka 分散式的訊息儲存服務     kafka 術語:         broker:安裝了kafka軟體的一臺機器         to

kafka-python的API簡單介紹

在上一篇文章中說明了kafka-python的API使用的理論概念,這篇文章來說明API的實際使用。 在官方文件詳細列出了kafka-python的API介面https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html 對於

漫遊Kafka入門篇之簡單介紹

釋出訊息通常有兩種模式:佇列模式(queuing)和釋出-訂閱模式(publish-subscribe)。佇列模式中,consumers可以同時從服務端讀取訊息,每個訊息只被其中一個consumer讀到;釋出-訂閱模式中訊息被廣播到所有的consumer中。 Consumers可以加入一個consumer

<java>枚舉的簡單介紹

pic spi str spa 枚舉類 lee string line 舉例 1.枚舉,enum關鍵字,相當於public final static. 2.舉例: 首先定義了一個名為spiciness的枚舉類型。 public enum Spiciness {

JSON的簡單介紹以及C語言的JSON庫使用

編程 delet 逗號 緩沖區 tdi 以及 and 項目 占用 JSON概述   JSON: JavaScript 對象表示法( JavaScript Object Notation) 。是一種輕量級的數據交換格式。 它基於ECMAScript的一個子集。 JSON采

Redis簡單介紹以及數據類型存儲

博客 個數 取值 rom 特點 而且 ring oid wan 因為我們在大型互聯網項目其中。用戶訪問量比較大,比較多。會產生並發問題,對於此。我們該怎樣解決呢。Redis橫空出世,首先,我們來簡單的認識一下Redis。具體介紹例如以下所看到的:

值得推薦的android開發框架簡單介紹

ron 事件 能開 android 開發人員 服務端開發 kjpush 流量 htm 一些總結出來的Android高速開發框架,所有都是開源框架,附帶項目地址,是開發學習的絕佳資料。 Direct-Load-apk項目 項目主頁地址:http://www.kymjs

Brief introduction to Java String Split 【簡單介紹下Java String Split】

a-z include cte eve class some sim string arr Split is a common function in Java. It split a full string to an array based on delimeter.

簡單介紹下微信中如何查看對方是否將你拉黑刪除?

黑名單 聯系人 微信 現如今微信使用的人越來越多,朋友圈中的好友也有成百個了,有很多人長時間不聯系了,想知道對方是否將你拉黑刪除了嗎?那在微信上如何查看清理那些把你刪除的好友呢?我們一起來學習下。微信上如何查看清理那些把你刪除的好友?第一種:單個發送信息向好友發送一條消息,驗證好友是否將你刪除,如

C++簡單介紹

必須 cpp rpc 跳過 動態 resolved line 實際應用 cast 一、怎樣用C++的源文件產生一個可運行程序 一個C++程序由一個或者多個編譯單元組成。每一個編譯單元都是一個獨立的源碼文件。一般是一個帶.cpp的文件,編譯器每次編一個文件編譯單元,生成一

FreeSWITCH第三方庫(音頻)的簡單介紹(一)

優勢 帶寬 blog 網絡 ndt 目標 領域 合成 通道 FreeSWITCH使用了大量的第三方庫,本文檔主要介紹音頻相關庫的信息: 視頻相關庫的信息介紹參考:http://www.cnblogs.com/yoyotl/p/5488890.html 其他相關庫的信

Spark調研筆記第3篇 - Spark集群相應用的調度策略簡單介紹

executor enabled max 靜態 air apache div pan 相關 Spark集群的調度分應用間調度和應用內調度兩種情況,下文分別進行說明。 1. 應用間調度 1) 調度策略1: 資源靜態分區 資源靜態分區是指整個集群的資源被預先劃分為多個par

網站壓力測試工具 Webbench簡單介紹

cgi 靜態頁面 服務 動態頁面 不同 傳輸數據 一個 php bench Webbech能測試處在相同硬件上,不同服務的性能以及不同硬件上同一個服務的運行狀況。Webbench的標準測試可以向我們展示服務器的兩項內容:每秒鐘相應請求數和每秒鐘傳輸數據量。Web

svn簡單介紹

upd com control avi 理解 update 權限控制 分享 osi 版本號控制(Revision control)是維護project藍圖的標準做法,能追蹤project藍圖從誕生一直到定案的過程。是一種記錄若幹文件內容變化。以便將來查閱特定版本號修訂情

javascript簡單介紹

ack back ole nbsp sub cati script int get ECMAScript  1.語法  2.變量:只能使用var定義,如果在函數的內容使用var定義,那麽它是一個局部變量,如果沒有使用var它是一個全局的。弱類型!  3.數據類型:原始數

Swift簡單介紹 教程

div cap ack 語句 apt 聲明數組 [1] unit ++i Swift是什麽? Swift是蘋果於WWDC 2014公布的編程語言。這裏引用The Swift Programming Language的原話: Swift is a new progr

C#之out修飾符、ref修飾符、params修飾符的簡單介紹

c# 一個 邏輯 本地 style 逗號 註意 可變 修飾 一、out修飾符   1、調用一個帶有輸出參數的方法也需要使用out 修飾符,但是作為輸出變量傳遞的本地變量在將他們作為輸出變量傳遞前不需要賦值(因為調用後會改變或丟失),編譯器允 許你傳遞未分

activeMQ的簡單介紹

總線 tom 高速 -s 集群 協議 jboss resource 客戶端 1.什麽叫activeMQ? ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實