「技術短文」kafka快速入門

「技術短文」kafka快速入門

為什麼會有kafka

起源是數據集成,從不同地方拿數據,數據流非常的亂

數據集成超麻煩,你往往會發現你用在收集整理數據的時間是最多的,像這樣

「技術短文」kafka快速入門

隨著時代的發展,會有各種各樣的新數據,特點:實時的,不斷產生,量大

數據有兩種:一種是數據庫數據,比如用戶、產品等關係型數據;另一種是實時的數據,比如數據(包括用戶點擊、瀏覽等),應用數據(包括CPU的使用等)和log。

「技術短文」kafka快速入門

因此有了各種各樣的新系統來處理這些數據

「技術短文」kafka快速入門

但是這些數據產生後,產生的問題:數據爆炸

如果不同的數據用不同的數據庫來存儲監控,不同應用要從不同的地方取得需要的數據,就會這樣(炸了)

「技術短文」kafka快速入門

問題:

數據源多

數據傳輸可靠性

數據一致性

所以Kafka出現了,把數據集成這個環節做的簡潔高效,像這樣

「技術短文」kafka快速入門

解決辦法就是通過一個統一的部件來做數據的採集傳輸

Kafka把這個過程抽象了一下變成了這樣(眼熟不眼熟,就是生產者消費者模型呀):

「技術短文」kafka快速入門

kafka設計的基本原則

「技術短文」kafka快速入門

  1. 一個流能不能解決所有問題
  2. 不僅僅是消息系統,而是一個流處理系統
  3. 不僅是單臺,而是clusters

特性:

「技術短文」kafka快速入門

  • 支持大數據,高吞吐
  • 保證消息的有序
  • 數據持久化
  • 支持分佈式
「技術短文」kafka快速入門

Kafka最核心的是log,什麼是log呢,log就是記錄什麼時間發生了什麼事

「技術短文」kafka快速入門

「技術短文」kafka快速入門

log抽象起來就是有序序列

如果log非常多,就進行partition

當log很多就要做成分佈式,對log分區,每個partition是獨立的、不交互的,這樣避免了partition之間的協調,非常高效。像這樣:

「技術短文」kafka快速入門

那為什麼不考慮不同partition之間的順序呢?因為複雜度

工作流程就是數據源(生產者)將數據寫入log,消費者從log中提取數據,log起到了一個消息隊列的作用。所以Kafka就是一個基於分佈式log實現的,具有發佈/訂閱功能的消息系統。

「技術短文」kafka快速入門

如何應用kafka

分佈式系統

數據集成

實時計算

例子:

「技術短文」kafka快速入門

各個公司的ceo,如果其中某一個消息丟了怎麼辦

「技術短文」kafka快速入門

做法就是講所有事件都排成有序隊列,保證消息不丟

「技術短文」kafka快速入門

數據集成

「技術短文」kafka快速入門

因為Kafka用log記下了所有時間發生的所有事,任何一個狀態都可以被恢復出來。Kafka的理念就是實時處理就是log加計算(Job),像這樣:

「技術短文」kafka快速入門

「技術短文」kafka快速入門

「技術短文」kafka快速入門

參考的視頻:https://www.youtube.com/watch?v=aJuo_bLSW6s

總結

  • 生活就是由一系列log組成
  • 世界只是log某一個時刻的快照
  • kafka本質上是一個基於分佈式log的發佈/訂閱消息系統


分享到:


相關文章: