网易云消息队列服务正式上线!

Posted 网易云基础服务

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网易云消息队列服务正式上线!相关的知识,希望对你有一定的参考价值。

网易云消息队列服务于今日凌晨正式上线。支持多种协议,部署灵活,运维简单。


网易云消息队列有为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积、高吞吐、保证投递等特性。此前已为多个网易内部产品提供服务。



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 可以缓冲突发流量,避免下游订阅系统因突发流量崩溃。

  • 日志监控,作为重要日志的监控通信管道,将应用日志监控对系统性能影响降到最低。

  • 消息推送,为社交应用和物联网应用提供点对点推送,一对多广播式推送的能力。

  • 金融报文,发送金融报文,实现金融准实时的报文传输,可靠安全。

  • 电信信令,将电信信令封装成消息,传递到各个控制终端,实现准实时控制和信息传递。


欢迎点击阅读原文进一步认识和体验网易云消息队列服务。


-END-



以上是关于网易云消息队列服务正式上线!的主要内容,如果未能解决你的问题,请参考以下文章

网易云音乐工程师,亲自揭晓消息队列改造之路! | 技术头条

网易云音乐:基于RocketMQ的亿级分布式消息队列系统建设实践

网易云 Kafka 服务今日正式上线

阿里云正式推出消息队列Kafka:全面融合开源生态

浅析腾讯云分布式高可靠消息队列服务CMQ架构

云栖发布|阿里云消息队列 RocketMQ 5.0:消息事件流融合处理平台