本文從穩定性、內核能力、治理能力以及使用習慣等方面,對比阿里云云消息隊列 Kafka 版與開源Apache Kafka。
穩定性
項目 | 云消息隊列 Kafka 版 | Apache Kafka |
磁盤水位 | 磁盤寫滿刪除舊數據。 | 磁盤寫滿直接宕機。 |
線程池隔離 | 讀冷數據仍可以保證寫入基本正常。 | 讀冷數據直接導致線程堵塞,數據寫入大量失敗。 |
分區規模 | 萬級分區仍然可以保證穩定寫入。 | 千級分區就會出現大量抖動。 |
巡檢系統 | 針對死鎖、宕機等問題進行自動發現和修復。 | 無。 |
Bug修復 | 及時發現并修復。 | 只能等社區緩慢修復,且通常要等新版發布,周期長。 |
內核能力
項目 | 云消息隊列 Kafka 版 | Apache Kafka |
彈性能力 | 秒級彈縮,業務幾乎無感知。 | 小時級彈縮,期間會因為復制流量加大,對集群造成影響。 |
存儲成本 | 專業版提供高可靠云存儲,節省大量存儲空間。 | 出于可用性和可靠性考慮,業界通常都是3副本存儲,存儲壓力大。 |
治理能力
項目 | 云消息隊列 Kafka 版 | Apache Kafka |
版本升級 | 一鍵自助升級。 | 手工操作易出錯。 |
Metrics曲線 | 能看到完整Metrics曲線,追蹤流量、排查問題必備。 | 只能看到實時Metrics,歷史數據較難查看。 |
堆積告警 | 告警及時發現問題。 | 無。 |
訂閱關系 | 完整的訂閱關系。 | 比較簡略。 |
分區狀態 | 可以看到完整的狀態圖。 | 比較簡略。 |
發送消息 | 控制臺直接發送消息。 | 只能命令行操作,成本高。 |
查詢消息 | 控制臺根據時間或者位點直接查看消息。 | 命令行可以消費,但無法根據位點或者時間直接定位到具體的消息。 |
使用習慣
云消息隊列 Kafka 版在客戶端協議層面和開源Apache Kafka完全一致,因此基于開源版本開發的應用和代碼可以無縫遷移到云消息隊列 Kafka 版。在通信協議完全兼容的前提下,為了提供更豐富的消息管控和治理功能,云消息隊列 Kafka 版會對使用習慣作出一些限制,具體說明如下。
項目 | 云消息隊列 Kafka 版 | Apache Kafka | 差異原因 |
Topic | |||
創建方式 |
|
| 云消息隊列 Kafka 版默認通過阿里云控制臺和OpenAPI管理Topic數據,以實現細粒度的權限管控、資源操作審計等安全管控能力。 說明
|
命名規范 |
| 支持大小寫字母、數字、下劃線(_)、短劃線(-)和英文句號(.),限定在3~249個字符。 | 過長的資源命名可能導致在其他系統傳輸過程中受限制,因此云消息隊列 Kafka 版限制Topic長度。 |
刪除方式 |
|
| 云消息隊列 Kafka 版默認通過阿里云控制臺和OpenAPI管理Topic數據,以實現細粒度的權限管控、資源操作審計等安全管控能力。 說明 云消息隊列 Kafka 版暫不支持通過開源方式刪除Topic。 |
Group | |||
創建方式 |
| 服務端自動創建 | 云消息隊列 Kafka 版默認通過阿里云控制臺和OpenAPI管理Group數據,以實現細粒度的權限管控、資源操作審計、訂閱組堆積告警監控等能力。 重要 如需開源方式創建Group,請參見自由使用Group。開啟后則無法再使用上述功能。 |
命名規范 |
| 支持大小寫字母、數字、下劃線(_)、短劃線(-)和英文句號(.),限定在3~249個字符。 | 過長的資源命名可能導致在其他系統傳輸過程中受限制,因此云消息隊列 Kafka 版限制Group的長度。 |
刪除方式 |
| Kafka CLI | 云消息隊列 Kafka 版默認通過阿里云控制臺和OpenAPI管理Group數據,以實現細粒度的權限管控、資源操作審計等安全管控能力。 說明 云消息隊列 Kafka 版暫不支持通過Kafka CLI刪除Group。 |