5.6 可恢复性
系统的一部分组件失效时 , 不会影响到整个系统 。消息队列降低了进程间的耦合度 , 所以即使一个处理消息的进程挂掉 , 加入队列中的消息仍然可以在系统恢复后被处理 。
5.7 顺序保证
在大多使用场景下 , 数据处理的顺序都很重要 。大部分消息队列本来就是排序的 , 并且能保证数据会按照特定的顺序来处理 。
5.8 缓冲
【消息中间件rocketmq 消息中间件】 在任何重要的系统中 , 都会有需要不同的处理时间的元素 。消息队列通过一个缓冲层来帮助任务最高效率的执行 , 该缓冲有助于控制和优化数据流经过系统的速度 。以调节系统响应时间 。
5.9 数据流处理
分布式系统产生的海量数据流 , 如:业务日志、监控数据、用户行为等 , 针对这些数据流进行实时或批量采集汇总 , 然后进行大数据分析是当前互联网的必备技术 , 通过消息队列完成此类数据收集是最好的选择 。
6 消息中间件常用协议
6.1 AMQP协议
AMQP即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 。基于此协议的客户端与消息中间件可传递消息 , 并不受客户端/中间件不同产品 , 不同开发语言等条件的限制 。
优点:可靠、通用
6.2 MQTT协议
MQTT(Message Queuing Telemetry Transport , 消息队列遥测传输)是IBM开发的一个即时通讯协议 , 有可能成为物联网的重要组成部分 。该协议支持所有平台 , 几乎可以把所有联网物品和外部连接起来 , 被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议 。
优点:格式简洁、占用带宽小、移动端通信、PUSH、嵌入式系统
6.3 STOMP协议
STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议 , 是一种为MOM(Message Oriented Middleware , 面向消息的中间件)设计的简单文本协议 。STOMP提供一个可互操作的连接格式 , 允许客户端与任意STOMP消息代理(Broker)进行交互 。
优点:命令模式(非topic\queue模式)
6.4 XMPP协议
XMPP(可扩展消息处理现场协议 , Extensible Messaging and Presence Protocol)是基于可扩展标记语言(XML)的协议 , 多用于即时消息(IM)以及在线现场探测 。适用于服务器之间的准即时操作 。核心是基于XML流传输 , 这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息 , 即使其操作系统和浏览器不同 。
优点:通用公开、兼容性强、可扩展、安全性高 , 但XML编码格式占用带宽大
6.5 其他基于TCP/IP自定义的协议
有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范 , 而是基于TCP\IP自行封装了一套协议 , 通过网络socket接口进行传输 , 实现了MQ的功能 。
7 常见消息中间件MQ介绍
7.1 RocketMQ
阿里系下开源的一款分布式、队列模型的消息中间件 , 原名Metaq , 3.0版本名称改为RocketMQ , 是阿里参照kafka设计思想使用java实现的一套mq 。同时将阿里系内部多款mq产品(Notify、metaq)进行整合 , 只维护核心功能 , 去除了所有其他运行时依赖 , 保证核心功能最简化 , 在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构 , 目前主要多用于订单交易系统 。
具有以下特点:
官方提供了一些不同于kafka的对比差异:
7.2 RabbitMQ
使用Erlang编写的一个开源的消息队列 , 本身支持很多的协议:AMQP , XMPP, SMTP,STOMP , 也正是如此 , 使的它变的非常重量级 , 更适合于企业级的开发 。同时实现了Broker架构 , 核心思想是生产者不会将消息直接发送给队列 , 消息在发送给客户端时先在中心队列排队 。对路由(Routing) , 负载均衡(Load balance)、数据持久化都有很好的支持 。多用于进行企业级的ESB整合 。
7.3 ActiveMQ
Apache下的一个子项目 。使用Java完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现 , 少量代码就可以高效地实现高级应用场景 。可插拔的传输协议支持 , 比如:in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports 。RabbitMQ、ZeroMQ、ActiveMQ均支持常用的多种语言客户端 C++、Java、.Net,、Python、 Php、 Ruby等 。
秒懂生活扩展阅读
- 广州天气台风最新消息 广州台风
- 手机qq怎么看别人撤回的消息
- 两人复合结婚的消息刷屏 范冰冰李晨宣布复合结婚
- QQ消息提醒框关闭了怎么打开
- 怎样设置QQ离线自动回复消息
- 淘宝消息未读是拉黑吗
- 林生斌事件有没有最新进展?林生斌事件最新近情况官方消息
- 微信新消息提示音不响
- 如何看全微信验证消息
- 苹果手机微信撤回的消息怎么查看