Kafka的一些特色

  1. 有pub/sub功能,同步和異步都支持,producer.type項設置linux

  2. 單條消息的上限用max.message.size項設置安全

  3. 消息可能有丟失,在consumer宕機後消息可能有重複投遞網絡

  4. 同一個partition內保證消息順序,多個partition不保證負載均衡

  5. 支持異步發送消息,可配置producer使得在必定時間後發送消息,或是消息累積到必定量後再發送異步

  6. 支持Scala、Java、C++、C#、Go、PHP、Python、Ruby,PHP須要5.3.3版本以上oop

  7. PHP版本的client功能還不夠豐富設計

  8. 支持持久化,消息存儲在磁盤上,複雜度爲O(1)隊列

  9. 沒有消費反饋,哪些消息已消費由consumer維護(經過記錄一個offset值),consumer也能夠回滾到之前的位置,從新讀取以前讀取過的消息進程

  10. 異步方式可支持消息的延時投遞,queue.time項設置ip

  11. 單個隊列可以承受的消息容量的極限由queue.size項設置

  12. 沒有固定的協議

  13. 消息的狀態由客戶端維護,服務端不參與,服務端會在消息保存必定時間(默認爲7天)後將其刪除

  14. 每一個consumer進程屬於一個consumer group,一個message只被發給同一個consumer group中的一個consumer進程,所以能夠支持queue和topic兩種語義

  15. producer發送消息後,broker不會發送ACK給producer

  16. consumer與broker間有負載均衡

  17. 在linux系統上使用sendfile系統調用,經過zero-copy技術達到很高的效率

  18. 部署難度通常,配置管理還算方便

  19. 最新版支持副本機制,解決了單點故障問題

  20. 最新版支持鏡像功能,可支持消息遷移,但還不太成熟,限制較多,如只能使用默認的patitioner等

  21. 水平擴展方便,對業務無影響,Zookeeper管理consumer和broker的加入和退出

  22. 也能夠不依賴Zookeeper,那麼事先須要在配置文件中指定機器信息,集羣是靜態的,不能變更

  23. 消息支持壓縮,節省網絡開銷,目前只支持gzip格式

  24. 有安全機制和監控機制

  25. 數據可批量導入hadoop,作離線數據分析

  26. 設計指導思想是注重吞吐率更勝於注重功能特性

  27. 將來會支持流式處理

  28. Scala語言實現,代碼行數不到6K,語言不熟悉但代碼量不大

  29. 開發較活躍,用戶量較多,目前還在增加中

相關文章
相關標籤/搜索