RocketMQ分享

RocketMQ架构

image

Apache RocketMQ是一个分布式消息和流式数据处理平台,具备低延迟,高性能和高可靠性等特性。 其官方网站上的介绍有如下特色:编程

  • 低延迟(Low Latency):在高压力下,99.6%+ 的响应时间在1ms内。
  • 面向金融级别(Finance Oriented):具备高可用性的跟踪和审计功能。
  • 行业可持续发展(Industry Sustainable):保证了万亿级的消息容量。
  • 厂商中立(Vendor Neutral):厂商无关,平台无关的一个新的开放的分布式消息和流标准(4.1版本开始)。
  • 支持大数据处理(BigData Friendly): 批量传输,多功能集成,可实现洪水吞吐。
  • 大规模积累(Massive Accumulation):若是有足够多的磁盘空间,能够在不损失性能的状况下积压消息。

如上图所示,它由四部分组成:名称服务器,代理服务器,生产者和消费者。它们中的每个均可以水平扩展,而不会出现单点故障。服务器

名称服务器集群网络

名称服务器提供轻量级服务发现和路由。每一个名称服务器记录完整的路由信息,提供相应的读写服务,支持快速的存储扩展。架构

代理集群异步

代理关注的是消息存储,它经过提供轻量级主题和队列机制来处理消息存储,他们支持推,拉模型,包含容错机制(容许2个副本或3个副本),可以抵御强峰值,而且按序积压千亿条消息的的功能。此外,代理还提供容灾,丰富的度量统计数据和报警机制,这些都是传统消息系统所缺乏的。分布式

生产者集群工具

生产者支持分布式部署,分布式生产者经过多种负载平衡模式向代理集群发送消息,发送进程支持快速故障和低延迟。post

消费者集群性能

消费者集群也支持推拉模式中的分布式部署。它还支持集群消息和消息广播。它提供了实时消息订阅机制,能够知足大多数用户的需求。大数据

Name Service

名称服务器是一个功能齐全的服务器,主要包含该两个功能:

  • 代理管理: 名称服务器从代理集群接收注册,并提供心跳机制来检查代理是否存活。
  • 路由管理: 每一个名称服务器将保存有关代理集群的整个路由信息和用于客户端查询的队列信息。

Broker Service

代理服务器负责消息存储和传递,消息查询,高可用保证等。

以下图所示, 代理服务器有几个重要的子模块:

image

  • 远程处理模块: 代理的入口,处理来自客户端的请求。
  • 客户端管理模块: 管理客户端(生产者/消费者)并维护消费者的主题订阅。
  • 存储服务模块: 提供简单的API来存储或查询物理磁盘中的消息。
  • 高可用服务模块: 在主代理和从代理之间提供数据同步功能。
  • 索引服务: 根据特定key,创建消息索引,并提供快速消息查询。

RocketMQ快速上手

如何快速上手RocketMQ,将其服务搭建在本地计算机中,请看这里

RocketMQ的事务性消息

RocketMQ事务性消息中是如何设计的请看这里

为何RocketMQ能支持更多的队列?

为何RocketMQ可以支持更多的队列?请看这里

RocketMQ与其余MQ比较

在早期阶段,阿里构建了基于ActiveMQ5.x(早于5.3)的分布式消息中间件。使用它进行异步通讯,搜索,社交网络活动流,数据管道,甚至在交易中使用。随着业务吞吐量增长,来自消息系统集群的压力也变得紧迫。

随着队列的增长和虚拟主题的使用,ActiceMQ IO模块遇到了瓶颈。尽管经过节流。断路或退化来解决这个问题,可是效果并很差。阿里开始关注流行的消息传递解决方案Kafka。不幸的是,Kafka不能知足他们的要求,特别是在低延迟和高可靠性方面。

下面的表中是RocketMQ,ActiveMQ和Kafka解决方案的比较。

比较项目 ActiveMQ Kafka RocketMQ
客户端SDK Java, .NET, C++ etc. Java, Scala etc. Java, C++, Go
协议和规范 推送模型, 支持OpenWire,STOMP, AMQP, MQTT, JMS 推送模型, 支持TCP协议 推送模型,支TCP,JMS, 开放消息
顺序消息 专有消费者或专有队列 确保分区内的消息的顺序 确保严格的消息顺序,并能优雅的扩展
定时消息 支持 不支持 支持
批量消息 不支持. 支持,异步生产 支持,使用同步的模式以免消息丢失
广播消息 支持 不支持 支持
消息过滤 支持 支持, 可使用Kafka流来筛选消息 支持,基于SQL92的属性筛选表达式
服务器端触发的重试 不支持 不支持 支持
消息存储 支持使用JDB和高性能日志(如LEVELDB, KAHADB) 快速持久化 高性能问价存储 高性能和低延迟文件存储
消息可追溯 支持 支持 支持,时间戳和偏移量
消息优先级 支持 不支持 不支持
高可用和灾备 支持,根据存储状况,若是使用kahad, 则须要一个ZooKeeper服务器 支持,须要ZooKeeper服务
消息追踪 不支持 不支持 主从模型.不带有其余套件
配置 默认配置为低级别,用户须要优化配置参数 Kafk经过配置key value的形式在配置文件中进行配置,也支持编程方式配置. 支持
管理和操做工具 支持 支持,经过终端命令能够进行配置 开箱即用, 用户只须要注意一些配置

RocketMQ 生态

https://user-gold-cdn.xitu.io/2019/4/26/16a56f329d0eab29?w=602&h=537&f=png&s=116702
相关文章
相关标签/搜索