消息隊列開源軟件 如何設(shè)計一個MQ消息隊列?
如何設(shè)計一個MQ消息隊列?1. 在上圖中定義發(fā)送和使用消息的過程2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等3。定義消息協(xié)議,定義消息隊列需要滿足的場景是否要保證消息的可靠性,必要
如何設(shè)計一個MQ消息隊列?
1. 在上圖中定義發(fā)送和使用消息的過程
2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等
3。定義消息協(xié)議,定義消息隊列需要滿足的場景
是否要保證消息的可靠性,必要時要保證存儲的高可用性
是否要支持同步和異步消息
是否要保證消息隊列例如rocketmq是高可靠性,卡夫卡是高吞吐量,但不高可靠性。
常見的消息隊列有哪些,它們之間有什么區(qū)別?
Rabbitmq:
Rabbitmq是一個基于Erlang語言的開源消息隊列。Rabbitmq在數(shù)據(jù)一致性、穩(wěn)定性和可靠性方面都非常優(yōu)秀。它直接或間接地支持多種協(xié)議,并能很好地支持多種語言。然而,它的性能和吞吐量并不令人滿意。由于Erlang語言的局限性,二次開發(fā)的成本很高。
Kafka:
Kafka是LinkedIn于2010年12月開發(fā)的分布式流媒體平臺,開源。它現(xiàn)在是Apache的頂級項目,是一個高性能的跨語言分布式流媒體平臺。快速持久化,消息持久化開銷在O(1)以下;高吞吐量
ActiveMQ:
是Apache下的一個子項目,介于zeromq和rabbitmq之間。與rabbitmq類似,它可以用少量代碼高效地實現(xiàn)高級應(yīng)用場景,并且只需要較低的成本。被稱為消息中間件的“瑞士軍刀”。然而,ActiveMQ不夠輕量級,并且當有許多隊列時,它不能很好地支持。據(jù)說也有丟失信息的情況。
Rocketmq:
Rocketmq是阿里巴巴的開源消息中間件。它目前在Apache中孵化,并在純Java中開發(fā)。它具有高吞吐量、高可用性,適合大規(guī)模分布式計算