VIP01-RocketMQ整体理解与快速实战(1).pdf
VIP02-RocketMQ开发模型.pdf
什么是MQ?为什么要用MQ(好处)?
MQ,即消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ
进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就是典型的MQ。
1、异步
错开生产者和消费者之间的响应时间,可以提高系统的响应速度和吞吐量;和解耦结合以后,可以实现分发
2、解耦
服务与服务之间解耦,减少服务之间的影响,提高系统的稳定性和扩展性;
可以进行数据分发:一个生产者通过消息队列将消息发给多个消费者
数据收集:多个生产者生产消息发送给一个消费者
通过异步和解耦的作用实现上述的场景。
3、削峰
MQ的优缺点
几大MQ产品特点比较
MQ的优缺点
几大MQ产品特点比较
RocketMQ组件
NameServer : 提供轻量级的Broker路由服务。
Broker:实际处理消息存储、转发等服务的核心组件。
Producer:消息生产者集群。通常是业务系统中的一个功能模块。
Consumer:消息消费者集群。通常也是业务系统中的一个功能模块。
启动顺序
RocketMQ集群架构
RocketMQ集群中的各个角色
RocketMQ的消息样例
基本样例
同步发送:只是把消息发送到broker了;有返回值
异步发送:有返回值
单向发送:
顺序消息
分区顺序消息:Broker中一个队列内的消息是可以保证有序的。
生产者端只有当一组有序的消息发送到同一个MessageQueue上时,才能 利用MessageQueue先进先出的特性保证这一组消息有序。
消费者端要保证消息有序,就需要按队列一个一个 来取消息,即取完一个队列的消息后,再去取下一个队列的消息。
广播消息
广播模式则是把消息发给了所有订阅了对应主题的消 费者,而不管消费者是不是同一个消费者组。
在集群状态 (MessageModel.CLUSTERING)下,每一条消息只会被同一个消费者组中的一个实例消费到(这跟 kafka和rabbitMQ的集群模式是一样的)。
延迟消息
延迟消息实现的效果就是在调用producer.send方法后,消息并不会立即发送出去,而是会等一 段时间再发送出去。这是RocketMQ特有的一个功能。
开源版本的RocketMQ中,对延迟消息并不支持任意时间的延迟设定(商业版本中支持),而是只支 持18个固定的延迟级别。
批量消息
批量消息是指将多条消息合并成一个批量消息,一次发送出去。这样的好处是可以减少网络IO,提升吞
吐量。
一个批次消息的大小不要超过1MB,最大不超过4M。
这些消息应该有相同的Topic,相同的waitStoreMsgOK。而且不能是延迟消息、事务消息 等。
过滤消息
在大多数情况下,可以使用Message的Tag属性来简单快速的过滤信息
一个应用就用一个topic,一个应用下面有很多种消息,用tag去进行分类,效率很高
精髓:并不是过滤,而是它在处理消息过滤的时候,把过滤下放到broker。一般而言是broker把消息推送到消费者端,然后被消费者端过去,但是这边不一样,实现是把这个消费者端的条件上推到broker了,broker就不会往消费者端推送了,好处是减少了网络IO
事务消息
事务消息是在分布式系统中保证最终一致性的两 阶段提交的消息实现。他可以保证本地事务执行与消息发送两个操作的原子性,也就是这两个操作一起成功或者一起失败。
ACL权限控制
权限控制(ACL)主要为RocketMQ提供Topic资源级别的用户访问控制。用户在使用RocketMQ权限
控制时,可以在Client客户端通过 RPCHook注入AccessKey和SecretKey签名;同时,将对应的权限控
制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在
$ROCKETMQ_HOME/conf/plain_acl.yml的配置文件中。Broker端对AccessKey所拥有的权限进行校
验,校验不过,抛出异常;
RocketMQ消费消息方式
1、消费者主动到broker拉消息,即拉模式
2、消息者等待broker把消息推送过来的推模式。
