【技术架构】AMQP, MQTT或STOMP
在本文中,我想写一些关于面向消息的协议,这些协议用于服务器、设备之间的通信,反之亦然。有许多面向消息的协议,每个协议都有自己的优缺点。其中最受欢迎的有AMQP, MQTT和STOMP。流行的消息代理如ActiveMQ、RabbitMQ和Kafka都支持它们,您可以调整您的消息代理(或无代理)并更改其配置,以告诉它们应该使用什么协议工作、通信、发送和接收消息。有些人说一个协议比另一个好,但我不同意这个判断,因为根据你的项目,它的规模和其他不同的因素,如安全性,互操作性,甚至带宽,你应该决定哪个协议最适合你。例如,MQTT是一种遥测协议,主要用于物联网和没有足够带宽的项目(如拨号和带宽较慢)中。我知道facebook使用它,所以它很好。AMQP也是一种很好的协议,它具有许多安全的、可互操作的特性和功能,被广泛使用。例如,NASA和摩根大通使用AMQP每天处理数十亿条消息。另一个需要注意的是MQTT是由IBM和AMQP由摩根大通设计的。
STOMP协议很简单,并且是基于文本的,在内部很像HTTP,您甚至可以使用Telnet连接到STOMP代理。
在这里,我建议您参考Raphael Cohn (StormMQ的首席架构师)撰写的一篇很好的文章,这篇文章很好地比较了AMQP和MQTT。
https://lists.oasis-open.org/archives/amqp/201202/msg00086/StormMQ_WhitePaper_-_A_Comparison_of_AMQP_and_MQTT.pdf
要了解更多信息,您可以浏览stackoverflow讨论,了解来自全球各地的开发人员对这些协议有什么样的体验。
关于哪种message broker是最好的还有一个很长的故事,以及不同系统中的许多不同基准测试。其中一个X更好,另一个基准Y更好的硬件和平台。我对这些判断完全中立,因为例如,一些开发人员比较代理的消息中间件和无代理的消息中间件,这是一个荒谬的比较。例如ActiveMQ、RabbitMQ和KAFKA都是代理消息传递中间件,而ZeroMQ和NanoMsg则是无代理消息传递系统。顺便说一句,我可能会写和文章关于比较一些他们和基准。我有使用ActiveMQ, RabbitMQ和KAFKA的经验,所有这些都很好。ActiveMQ对于事务性不高的项目来说足够快,而且非常稳定,支持JMS主题、队列和许多协议,如AMQP、MQTT、STOMP和OpenWire。此外,RabbitMQ是一个非常好的选择,它具有很好的消息分派策略,如循环调度和公平分派(很好的策略)。另外Kafka是非常快,使用Zookeeper,但配置是一个麻烦在***。ZeroMQ是非常快的,但是考虑到它是没有经纪的,所以你错过了经纪功能。
请随时与我联系,并在这里留下您使用消息代理和无代理的经验(它们的特性、性能、稳定性、互操作性和安全性)。
感谢阅读这篇文章的朋友,保重,祝你有个愉快的一天。
本文:http://jiagoushi.pro/node/1123
讨论:请加入知识星球【首席架构师圈】或者小号【jiagoushi_pro】
- 325 次浏览