文章目錄
- 一、簡介
- (1)問題
- 1. 什麼是 `Kafka`?
- 2. `Kafka`核心功能是什麼?
- 3. `Kafka`有什麼用?
- 4. `Kafka`有什麼特性?
- 5. 适用場景?
- 二、參考資料
一、簡介
https://kafka.apache.org/intro
(1)問題
1. 什麼是 Kafka
?
Kafka
Apache Kafka® is a distributed streaming platform.
Kafka
是一個分布式流處理平台。
- 可當作消息引擎系統(Message System)
引擎:具備某種傳輸和處理的能力
其實不管是消息引擎還是流式處理平台,
Kafka
的處理流程從未發生質的變化:
如圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iNykTOzE2Y5U2Y1EGM1ITNzYzXxIjN1UTMxIzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
- 可作為 存儲系統
寫入到 中的資料是落地到了磁盤上,并且有備援備份,
kafka
允許
kafka
等待确認,通過配置,可實作直到所有的
producer
完成複制才算寫入成功,這樣可保證資料的可用性。
replication
2. Kafka
核心功能是什麼?
Kafka
- 高性能的消息發送
- 高性能的消息消費
3. Kafka
有什麼用?
Kafka
- 解耦
生産者與消費者解耦
- 備援
具有持久化能力,可規避消息處理前丢失的風險
- 擴充
消息系統是統一的資料接口,各系統可獨立擴充
- 峰值處理能力
支援峰值流量,業務系統可根據處理能力從消息系統中擷取并處理對應量的請求
- 可恢複性
系統中部分元件失效并不會影響整個系統,它恢複後仍然可以從消息系統中擷取并處理資料
- 異步通信
在不需要立即處理請求的場景下,可以将請求放入消息系統,合适的時候再處理
4. Kafka
有什麼特性?
Kafka
Kafka
設計之初旨在提供3個方面的功能特性:
- 為生産者和消費者提供一套簡單 API
- 降低網絡傳輸和磁盤存儲開銷
- 具有高伸縮性架構
A streaming platform has three key capabilities:
- Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
- Store streams of records in a fault-tolerant durable way.
- Process streams of records as they occur.
流處理系統有這三種能力:
- 釋出和訂閱流式資訊,近似于消息隊列或企業消息傳遞系統
- 在容錯環境下存儲流式資訊
- 處理流式資訊
5. 适用場景?
-
消息傳輸
解耦和生産者和消費者、緩存消息等。
代替傳統的消息總線(message bus)或消息代理(message broker)
-
網站行為日志追蹤
經常被用來記錄Kafka
使用者或者web
使用者的各種活動,如浏覽網頁、搜尋、點選等活動,這些活動資訊被各個伺服器釋出到kafka的topic中,然後訂閱者通過訂閱這些topic來做實時的監控分析,或者裝載到hadoop、資料倉庫中做離線分析和挖掘。app
-
審計資料收集
便捷地對多路消息進行實時收集,同時持久化。
滿足對關鍵的操作和運維進行監控和審計。
-
日志收集
一個公司可以用
可以收集各種服務的 log,通過Kafka
以統一接口服務的方式開放給各種 kafka
,例如consumer
、Hadoop
、HBase
Solr
等。
同時保持了低延時的特點。
-
Event Sourcing(事件源)
實際上是領域驅動設計(DDD)的名稱,使用事件序列來表示狀态變更。Event Sourcing
-
流式處理
比如
和 spark streaming
storm