网易云消息队列有为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积、高吞吐、保证投递等特性。此前已为多个网易内部产品提供服务。
1
消息队列简介
消息队列(Message Queue,简称 MQ)基于 RabbitMQ 的分布式,高可用,易扩展,易使用等特点,提供消息发布的订阅,支持实现 RPC、监控报警等一系列消息服务,是企业级互联网架构的核心产品。
MQ 有为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积、高吞吐、保证投递等互联网应用所需的特性。目前在网易内部已被网易云音乐、网易考拉、云信等产品广泛使用。
MQ 基于原生 RabbitMQ 支持 AMQP、MQTT、HTTPS、STOMP、WebSockets 等多种协议,支持 Ruby、.NET、Java、C、PHP 等语言。
2
产品特性
1. 可维护性
自动创建部署 RabbitMQ 实例;
提供节点查活功能,检测到节点异常能够主动触发主从切换;
多维度状态监控,根据用户关心的指标,设置阀值报警或者事件报警。
2. 可用性
高可用模式下,所有功能无单点故障;依托网易云强大的技术团队,保障实例稳定可靠运行。
3. 可靠性
提供生产者 confirm 机制(生产者发送成功,消息已经写入存储介质),消费者 Ack 机制(消费者处理成功,消息可以安全删除);
持久化消息落盘存储,一份消息多处存储,保证消息不丢失。
4. 隔离性
每个实例节点部署在独立云主机上,做到真正的用户隔离。
3
产品基本功能
MQ 提供了多种协议和开发语言的接入方式以及多维度的管理工具。
1. 多协议接入
支持 AMQP、MQTT、HTTPS、STOMP、WebSockets 等多种协议,便于用户根据自己的使用场景选择适合的协议。
2. 管理工具
Web 控制台:
支持用户管理 RabbitMQ 实例(查看用户创建的实例列表,参看实例详细信息,更新密码等操作);
支持无密码登录 RabbitMQ 管理后台,查看 RabbitMQ 运行状态及支持相关管理操作;
支持查看 RabbitMQ 部署节点性能监控信息,设置多维度监控报警。
3. 消息发布/订阅
RabbitMQ 提供了 3 种类型的 exchange:direct exchange,fanout exchange 和 topic exchange:
direct exchange 只会将收到的消息路由到 RoutingKey 匹配的队列中去;
fanout exchange 会将消息发送到所有绑定到该 exchange 的 queue 中而不关注 RoutingKey;
topic exchange 更为灵活,并且使用更为广泛,它会根据 RoutingKey 进行模式匹配,只要 RoutingKey 匹配就会发送到对应的 queue 中。
RoutingKey 正则匹配:
每一条消息 RoutingKey 会包含若干个标识符(以点号分隔),上图中的 * 表示可以匹配一个标识符,# 表示可以匹配 0 个或多个标识符。
上图中 Q1 与 .orange. 绑定,Q2 与 ..rabbit 和 lazy.# 绑定。假设一条消息的 routingKey 为 lazy.orange.pig,那么 Q1 和 Q2 都将与这条消息匹配。通过对 RoutingKey 和 BindingKey 的精心设计,可以满足点对点(私信)、组播、广播等业务场景的通信需求。
4. 实现 RPC
当客户端启动时,它首先创建一个匿名独占回调队列;
客户端为 RPC 请求设置 2 个属性:replyTo,设置回调队列名字;correlationId,标记 request,且每个请求都有唯一值;
请求被发送到 rpc_queue 队列;
RPC 服务器端监听 rpc_queue 队列中的请求,当请求到来时,服务器端会处理并且把带有结果的消息发送给客户端。接收的队列就是 replyTo 设定的回调队列;
客户端监听回调队列,当有消息时,检查 correlationId 属性值,如果与 request 中匹配,那就是结果了。
4
网易云消息队列产品的优势
1. 专业
RabbitMQ 作为一款成熟的消息中间件,在业内被广泛使用,同时具有完整的生态圈和详细的文档,便于用户使用。
MQ 在网易内部也已经使用多年,网易云音乐,网易考拉,云信等产品目前都已经接入,并且通过了各种大型活动真实场景的验证,稳定可靠。
2. 高可靠
用户创建的高可用实例,一份消息多节点备份,即使单个节点出现异常,服务依然可用,消息不会丢失;
持久化数据落盘,一份消息多个磁盘存储,经过严格的断电测试,消息依然保证不丢失;
根据用户内存磁盘配置大小,可以独享存储空间用于堆积消息的存储。
3. 独立部署
用户实例每个节点部署在单独一台云主机上,真正做到独享服务,用户隔离。
5
消息队列的使用场景
MQ 可应用在多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、手游、视频、物联网、车联网等。
MQ 可以应用但不局限于以下业务场景:
一对多,多对多异步解耦,基于发布订阅模型,对分布式应用进行异步解耦,增加应用的水平扩展能力。
削峰填谷,大促等流量洪流突然来袭时,MQ 可以缓冲突发流量,避免下游订阅系统因突发流量崩溃。
日志监控,作为重要日志的监控通信管道,将应用日志监控对系统性能影响降到最低。
消息推送,为社交应用和物联网应用提供点对点推送,一对多广播式推送的能力。
金融报文,发送金融报文,实现金融准实时的报文传输,可靠安全。
电信信令,将电信信令封装成消息,传递到各个控制终端,实现准实时控制和信息传递。
以上由网易企业信息化服务提供商,湖南领先网络科技整理发布。
网易企业服务(qiye163.co)是网易凭借其20年品牌优势与经验在企业邮箱的基础上,为进一步布局企业市场而打造的企业级产品矩阵,致力于提供一站式企业信息化解决方案。湖南领先网络科技是网易企业产品授权经销商,专业为企业提供网易企业邮箱、网易办公套件等一站式企业信息化专业解决方案。办理网易企业邮箱及旗下企业产品相关业务,就找湖南领先网络科技。