常見開源消息系統

jopen 10年前發布 | 28K 次閱讀 消息系統

消息系統的作用:異步處理、削減峰值、減少組件之間的耦合。

選擇消息系統根據業務需要需要考慮以下幾個方面:

  1. 是否持久化
  2. 吞吐能力
  3. 高可用
  4. 分布式擴展能力
  5. 兼容現有協議
  6. 易于維護
  7. 其他,如消息丟失和重復的處理
  8. 避免單點故障
  9. 負載均衡
  10. </ol>

    常見消息系統協議:

    1. STOMP
    2. AMQP
    3. 類似 MEMCACHE 的協議
    4. HTTP
    5. 自定格式
    6. </ol>

      1、2 是不錯的可選開源組件:

      1. Kafka/MetaQ: 廣泛用于 Linkedin 內部 (類似有 Java 版本的國產 MetaQ)

      由于優先考慮吞吐,更加適合大數據量的消息收集和處理,比如日志分析、用戶行為信息實時報表、集群狀態信息收集和分析。

      1. 優先考慮持久化的設計,依靠 page cache 管理內存
      2. 高吞吐 112MB/s 11K msgs/s (比 beanstalkd >70x 吞吐能力)
      3. 支持異步復制
      4. 高可用、基于 Zookeeper 的集群設計、支持消費者失效后重新負載均衡
      5. Kafka 提供 PHP 類庫
      6. 支持 ganglia JMX 監控
      7. 需要策略避免重復消息, 消費者更新 Zookeeper 的 offset 的方式 (MetaQ 已經提供了幾種方式避免消息重復)
      8. MetaQ 提供 HTTP 接口
      9. </ol>

        http://www.mail-archive.com/kafka-users@incubator.apache.org/msg02082.html
        https://github.com/neophenix/StateOfTheMQ/blob/master/state_of_the_mq.pdf?raw=true
        http://s.urge.omniti.net/i/content/slides/Surge2012-ErikOnen_Kafka_Messaging-Paradigms.pdf
        http://research.microsoft.com/en-us/um/people/srikanth/netdb11/netdb11papers/netdb11-final12.pdf
        http://dirlt.com/kafka.html
        http://dirlt.com/index.html
        http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

        2. NSQ – Golang

        無中心設計、節點自動注冊和發現。可以考慮作為內部通訊框架的基礎。

        https://github.com/bitly/nsq

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!