ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、概述 分布式系统中常用通讯模型主要是“**请求-应答**”模型和“**发布-订阅**”模型。前者常见如RPC通讯,常用HTTP REST或Thrift等协议;后者多指消息队列MQ通讯; RPC大多属于请求-应答模式,也包括越来越多响应式范式,对于需要点对点交互、强事务保证和延迟敏感的服务/应用之间的通信,RPC是优于消息队列的。那么消息队列(下文也简称MQ,即Message Queue)可以看做是一种异步RPC,把一次RPC变为两次或多次,进行内容转存,再在合适的时机投递出去。消息队列中间件往往是一个分布式系统,内部组件间的通信仍然会用到RPC; ## 二、常见协议 AMQP、STOMP、MQTT、OpenWire、XMPP、WAMP、自定义等等; 各种消息中间件产品,至少都实现了其中一种消息协议; ### **AMQP** AMQP协议的全称是:Advanced Message Queuing Protocol(高级消息队列协议)。目前AMQP协议的版本为 Version 1.0,这个协议标准在2014年通过了国际标准组织 (ISO) 和国际电工委员会 (IEC) 的投票,成为了新的 ISO 和 IEC 国际化标准; ### **XMPP** XMPP基于XML,用于IM系统的开发。国内比较流行的XMPP服务器叫做Openfire,它使用MINA作为下层的网络IO框架(不是MINA2是MINA1);国外用的比较多的XMPP服务器叫做Tigase,它的官网号称单节点可以支撑50万用户在线,集群可以支持100万用户在线; ### **STOMP** Stomp协议,英文全名Streaming Text Orientated Message Protocol,中文名称为 ‘流文本定向消息协议’。是一种以纯文本为载体的协议(以文本为载体的意思是它的消息格式规范中没有类似XMPP协议那样的xml格式要求,你可以将它看作‘半结构化数据’)。目前Stomp协议有两个版本:V1.1和V1.2; ### **MQTT** MQTT是基于二进制消息的发布/订阅编程模式的消息协议,最早由IBM提出的,如今已经成为OASIS规范。由于规范很简单,非常适合需要低功耗和网络带宽有限的IoT场景; ### **WAMP** Web 应用消息协议(WAMP,Web Application Messaging Protocol),是建立在Websocket之上的一种开放的、基于文本的协议标准,并且结合了基于发布-订阅和请求/响应编程模型,同时具备强大的路由和消息投递策略; ### **OpenWire** OpenWire 是 **Apache**的一种跨语言协议,允许从不同的语言和平台访问 ActiveMQ,是 4.x 版本以后默认的传输协议;