WolframHmpl是dpstramIO的联合创始人。dpstramIO是一家位于德国的技术创业公司,为移动客户端、及物联网设备提供高性能、安全和可扩展的实时通信服务。文本由魏佳翻译,转载译文请注明来自高可用架构。
想要向服务器发送请求并获得响应?直接使用HTTP吧!非常简单。但是当需要通过持久的双向连接来通信时,如WbSockts,当然你也有其它的选择。这篇文章会简单扼要的解释MQTT,XMPP,STOMP,AMQP,WAMP和其它替代品。这里常被引用的XKCD漫画[1]之一:
等等,其实没有“实时协议”这种东西!确实如此,但这里我将该术语(RaltimProtocol)当作一堆协议的代称,这类协议都是设计用于分发消息,同步数据和通过持久双向的连接来进行请求/响应。
我们先来根据它们各自的目的进行分类:
纯消息底层协议(例如TCP)是被设计用来将一个消息从一个发送者(sndr)传递给一个接收者(rcivr)。他们并不关系消息本身应该如何构建,也不关系消息的请求、获取、存储以及如何保证安全可靠。像WbSockts这样在TCP之上的协议,添加了一些额外的功能,例如使用头部(hadr)传输元数据,通过多个数据包分割较大的消息,简单的身份验证,以及路由/重定向相关信息。本质上它们仍然是点对点交换数据的方式。当涉及到构建更大,更复杂的系统时,你需要一个更高层次的通信范式:
发布-订阅发布-订阅模式是在大规模系统中被广泛使用的通信方式,用于多对多无状态消息传递。“订阅者”(Subscribrs)可以订阅“消息主题”(topics,channls,vnts,namspacs),“发布者”(Publishrs)可以将消息发布到“消息主题”,通过路由,所有的订阅者都将收到。这种范式是非常灵活,高效和可扩展。它将发送者与接收者隔离开,允许订阅者自由得订阅主题或取消订阅。这和我们日常订阅报纸是一样的。有许多支持发布-订阅的协议:MQTT,STOMP,WAMP等等。那么我们应该如何选择呢?
MQTTMQTT(MssagQuuTlmrtyTransport)[]是一种二进制协议,主要用于服务器和那些低功耗的物联网设备(IoT)之间的通信。它位于TCP协议的上层,除了提供发布-订阅这一基本功能外,也提供一些其它特性:不同的消息投递保障(dlivryguarant),“至少一次”和“最多一次”。通过存储最后一个被确认接受的消息来实现重连后的消息恢复。
它非常轻量级,并且从设计和实现层面都适合用于不稳定的网络环境中。
什么时候应使用它?物联网(IoT)场景中更适合,支持几乎所有语言进行开发,并且浏览器也可通过WbSockt来发送和接收MQTT消息。
同时,对于MQTTBrokr,也有很多选择,如Mosquitto[]或VrnMQ[4]以及基于云的MQTT平台,如HivMQ[5]或CloudMQTT[6]。
STOMP面向流文本的消息传输协议(STOMP,StramingTxtOrintdMssagingProtocol)[7],是WbSockt通信标准。在通常的发布-订阅语义之上,它通过bgin/publish/白癜风前期白癜风青少年援助
转载请注明:http://www.guyukameng.com/aspnet/2019-12-18/11112.html