RocketMQ的功能
流量削锋
RocketMQ的引入,可以大大减少系统的流量压力,同时,rokecktmq能支持十万量级并发压力。将用户请求存入mq中间件,在下游系统慢慢消费,是能很大程度节省服务器资源以及防止服务器崩溃的功能。
应用解耦
复杂的应用里会存在多个子系统,比如电商应用中存在订单系统,库存系统,物流系统,支付系统等。这个时候用户下单,可能牵扯到的系统多而杂,而且容错率很低,任何一个子系统由于发版导致服务不可用之类的原因,都会造成下单异常,服务不可用,而使用RocketMQ则可以将下单消息存入消息队列,服务恢复即可消费。不会影响用户体验。
消息分发
将通用的消息写入消息队列,各个下游消费方可以根据自身需要订阅数据,不同团队订阅的数据可以重复也可以不重复,互不影响。
RocketMQ各部分角色
RocketMQ由四个部分组成
- Producer(生产者)
- Consumer(消费者)
- Broker(存储器)
- NameServer(协调中心)
具体架构图如下:
启动RocketMQ的顺序是先启动NameServer,再启动Broker,为了消除单点故障以及高可用,可以在多台机器上部署多个NameServer和Broker,为每个Broker部署一个或者多个Slave。
Topic Group Tag基础概念
Topic
消息主题,通过 Topic 对不同的业务消息进行分类。Topic代表消息的不同类型,两种消息没有任何关联,比如门店新增的消息,和门店订单的消息
Tag
消息标签,用来进一步区分某个 Topic 下的消息分类,消息队列 RocketMQ 允许消费者按照 Tag 对消息进行过滤,确保消费者最终只消费到他关注的消息类型。
Group
和现实世界中一样,RocketMQ中也有组的概念。代表具有相同角色的生产者组合或消费者组合,称为生产者组或消费者组。
消费组下的clusting和broadcasting概念
1、在clustering模式下,同一个consumerGroup里的每个Consumer只消费所订阅消息的一部分内容,同一个ConsumerGroup里的所有的Consumer消费的内容合起来才是所订阅的Topic内容的整体,从而达到负载均衡的目的
2、在broadCasting模式下, 同一个ConsumerGroup里的每个Consumer都能消费到所订阅的全部消息,也就是一个消息会被多次分发,被多个consumer消费