RocketMQ技术总结

本文详细介绍了RocketMQ,包括MQ的基本概念、为何使用MQ、各种消息队列产品的比较。接着深入探讨了RocketMQ的优势,如高并发读写能力,并解析了RocketMQ的集群架构和工作流程。此外,还介绍了RocketMQ的不同消息类型,如顺序消息、延迟消息、事务消息、死信消息和消息幂等性,展示了RocketMQ在系统解耦、异步处理和流量削峰等方面的优点。
摘要由CSDN通过智能技术生成

目录

一、MQ介绍

1、什么是MQ

2、为什么要用MQ

3、各种消息队列产品比较

二、RocketMQ概念和优势

1、先来了解几个概念

2、优势:高并发读写

三、RocketMQ集群架构

1、集群架构

2、接下来看一下集群工作流程

3、集群特性

四、RocketMQ几种消息类型

1、顺序消息

2、延迟消息

3、事务消息

4、死信消息

5、消息幂等性


一、MQ介绍

1、什么是MQ

 

MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。

2、为什么要用MQ

 

1)解耦:系统的耦合性越高,容错性就越低,以电商系统为例,用户创建订单后,如果耦合调用库存系统,物流系统,支付系统,任何一个子系统出现故障或者因为升级原因导致暂时不能使用,都会造成操作异常,影响用户使用体验。 使用消息队列解耦合,系统的耦合性就会降低了,如图所示,订单系统将消息发送到mq,支付、库存、物流系统到mq消费消息,这样比如当物流系统发生故障,需要几分钟才能修复的时候,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成,当物流系统恢复后,补充处理存在消息队列中的订单消息即可,终端系统感知不到物流系统发生过几分钟故障。

 2)异步 场景:A系统接受一个请求,需要在本地写库,还需要调用B,C,D三个系统写库,这样总调用时间就会很长,用户体验非常不好 如果使用MQ,那么A系统连续发送三条消息到MQ队列中,其他系统根据自身需要去MQ消费消息,A系统从接受一个请求到返回响应给用户总时长就会短很多,大大提高了用户体验

3)流量削峰 场景:应用系统如果遇到系统请求流量的瞬间猛增,有可能会将系统压垮 有了消息队列可以将大量请求缓存起来,分散到较长一段时间处理,这样可以大大提高系统稳定性和用户体验 一般情况,为了保证系统的稳定性,如果系统负载超过阈值,就会阻止用户请求,这会影响用户体验,而如果使用消息队列将用户请求缓存起来,等待系统处理完毕后通知用户,用户体验更好。

3、各种消息队列产品比较

ActiveMQ:早期是使用的比较多,没有经过高吞吐量场景验证,社区也不活跃 RabbitMQ:稳定性高,erlang语言开发,不考虑二次开发可以考虑 RocketMQ:java语言开发,经过高吞吐量验证,便于二次开发 kafka:大数据领域日志采集等业务推荐使用

二、RocketMQ概念和优势

1、先来了解几个概念

Topic:官方定义是生产者在发送消息和消费者在拉取消息的类别。 Topic在Google翻译中解释为话题。我们可以理解为第一级消息类型,类比于书的标题。在应用系统中,一个Topic标识为一类消息类型。Topic与生产者和消费者之间的关系非常松散。具体来说,一个Topic可能有0个,一个或多个生产者向它发送消息;相反,一个生产者可以发送不同类型Topic的消息。类似的,消费者组可以订阅一个或多个Topic,只要该组的实例保持其订阅一致即可。

Message queue:一个Topic有若干个Queue。若Topic同时创建在不同的Broker,则不同的broker上都有若干Queue,消息将物理地存储落在不同Broker结点上。

Tag:标签,为用户提供了额外的灵活性。来自同一业务模块的具有不同目的的消息可以具有相同的topic和不同的tag。标签有助于保持代码的清晰和连贯,同时标签也方便RocketMQ提供查询功能。

Producer Group: 一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致。

Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致,可以实现消息消费的负载均衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值