kafka --- 系列一(kafka概念及相關名詞解釋)

一、kafka概念

Kafka是由LinkedIn開發的一個分佈式的消息系統,最初是用作LinkedIn的活動流(Activity Stream)和運營數據處理的基礎。

活動流數據包括頁面訪問量(Page View)、被查看內容方面的信息以及搜索情況等內容。這種數據通常的處理方式是先把各種活動以日誌的形式寫入某種文件,然後週期性地對這些文件進行統計分析。

運營數據指的是服務器的性能數據(CPU、IO使用率、請求時間、服務日誌等等數據)。運營數據的統計方法種類繁多。

Kafka使用Scala編寫,它以可水平擴展和高吞吐率而被廣泛使用。目前越來越多的開源分佈式處理系統如Cloudera、Apache Storm、Spark都支持與Kafka集成。

綜上,Kafka是一種分佈式的,基於發佈/訂閱的消息系統,能夠高效並實時的吞吐數據,以及通過分佈式集羣及數據複製冗餘機制(副本冗餘機制)實現數據的安全

二、kafka相關名詞解釋

消息(message)

Kafka 的數據單元,稱爲 “消息”。消息由鍵(key)、值(value)組成,鍵作爲元數據,是可選的,值即爲消息的內容。消息鍵與值,都是由字節數組構成,其數據格式完全由客戶端控制。

消息寫入到 Kafka 時,按照主題和分區分組,以批次(batch)的形式寫入。需要根據時間延遲和吞吐量,權衡批次的 “大小”:批次越大,單位時間內處理的消息越多,單個消息的傳輸時間越長。

生產者(producer) / 消費者(consumer)

作爲 “發佈與訂閱” 架構中的 “發佈者”,“生產者” 生產(或 “寫入”)消息。

作爲 “發佈與訂閱” 架構中的 “訂閱者”,“消費者” 消費(或 “讀取”)消息。消費者是 “消費者組”(consumer group)的一部分。

主題(topic) & 分區(partition)

Kafka 的消息通過 “主題” 進行分類。主題能夠被劃分爲若干 “分區”。消息以追加的方式寫入分區,並以 FIFO 的方式讀取,保證了消息在單個分區內的順序。

Kafka 支持分區的 “複製機制”,以提供消息冗餘,分區的 “實例” 稱爲 “副本”(replica),其中之一作爲 “首領副本”(leader replica)。

broker

Kafka 服務器通常被稱爲 broker:

  • broker 接收來自生產者的消息,並將消息落地到磁盤保存
  • broker 接收來自消費者的請求,返回已經落地到磁盤的消息

broker 負責 “消息保留策略”:當消息超過保留時間,或者消息的總量達到大小限制,舊的消息將過期並且被刪除。

多個 broker 能夠組成 Kafka 集羣,其中之一作爲 “集羣管理器”。單個分區的副本必須位於不同的 broker。

AMQP協議

Advanced Message Queuing Protocol (高級消息隊列協議)
The Advanced Message Queuing Protocol (AMQP):是一個標準開放的應用層的消息中間件(Message Oriented Middleware)協議。AMQP定義了通過網絡發送的字節流的數據格式。因此兼容性非常好,任何實現AMQP協議的程序都可以和與AMQP協議兼容的其他程序交互,可以很容易做到跨語言,跨平臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章