基本需求

  1. 支援 pub/sub
  2. 支援 message queue
  3. 可以手動傳遞 Ack message (可以達到 at-lease-once)
  4. 最少在相同的topic下訊息順序保證
  5. 訊息持久性不丟失
  6. Cluster/Failover 架構
  7. 可以重新播放 Message
  8. 相同 topic 可以被不同的 consumer group 訂閱, 例如: order consumer group, payment consumer group 可以同時訂閱 order-topic
  9. 支援 Log Retention 依照時間自動刪除
  10. Topic 可以透過程式動態調整保存時間條件
  11. Log entry 可以往雲端storage 備份, 例如: aws s3
  12. topic 可以透過 sink 寫入到第三方服務, 例如: elasticsearch

進階需求

  1. 支援 SQL 查詢 topic
  2. 支援 topic 與 topic 之間的 message 交易 ( transaction 功能)
  3. 多租戶 (multi-tenancy)
  4. 多資料中心 (multi-region support)

kafka 介紹

http://www.jasongj.com/2015/01/02/Kafka深度解析/