Rocketmq学习之路(一)从生产上的问题引出MQ

本文介绍了消息队列MQ的基本概念,如异步处理和解耦,并通过订单系统的例子展示了MQ在处理业务中的作用。文章讨论了同步与异步的区别,提到了RabbitMQ、RocketMQ和Kafka三种常见MQ的优缺点,并在MQ选型时需要考虑的关键因素。此外,还详细探讨了RocketMQ的集群化部署、数据存储和高可用性策略。
摘要由CSDN通过智能技术生成

前言:

从来没有真正弄明白mq是什么,只知道他有消峰,异步,解耦的作用。但是在日常开发工作中,就是简单的生产者发送消息,消费者接受消息。所以,从今天开始。我要吃掉这个技术。

一.这该死的订单系统

说到订单系统,大家一定会想到,不就是用户购买商品。订单系统从数据库中库存减少这样的操作嘛,再复杂一点就是要告诉xx物流来拿货,发快递。再复杂一点就是给用户发送消息告诉用户下订单已经成功了。再复杂一点就是支持退货,库存再加回来。再复杂一点就是用户下单购买商品,你给用户发一些红包啦,券啦。再复杂一点就是类似于双十一这种短时间有大量用户下订单的操作。

但是上面说的一些操作,其实藏匿着很多危机,比如告诉物流拿货,第三方物流系统接口挂掉了,那岂不是你下不了订单?比如退货,你这边库存已经加回来了,但是第三方支付系统告诉你退款失败。用户岂不是财货两空?再比如退货,你的红包之类的是不是得收回?双十一qps夸夸往上增,服务器挂掉了怎么办?

二.同步异步的概念

同步:就是从用户下订单开始 添加订单记录,减库存,发券,通知物流公司发货。这些操作都是一步步来的。比如添加订单记录用了10ms,减库存用了10ms,发券用了10ms,调用物流公司接口用了20ms.这个接口一共用了50ms

异步的概念,就是不用等上一个操作做完,下一个操作就可以执行。

三.mq的作用

其实mq就是用来干这件事情的,把发券,通知物流公司发货,抗下双十一这种大量请求的场景

都可以通过mq来解决上述问题。对应发券就是异步操作,通知物流公司发货就是跟第三方接口解耦,抗下双十一多请求就是消峰。

四.mq的选型

现在常见的mq一般有3种:rabbitmq,rocketmq,kafka  他们四个各有各的好多,也各有各的缺点。

我们在做技术选型的时候,要思考下面几个问题?

1.他会不会丢数据?

2.同等机器下,他能支持多少qps?

3.社区活不活跃?

4.可不可以部署集群环境

5.支持一些基本功能么(延时消息,事务消息,消息堆积,消息回溯,死信队列)?

mq选型对比
名称优势劣势吞吐量
rabbitmq保证数据不丢失,支持死信队列,可以部署集群吞吐量比较低,加机器比较困难,开发语言erlang,无法读懂他的源码每秒几万
rocketmq保证高可用,通过配置可以保证数据不丢失,支持高级特性,基于java开发,很容易读懂源码官方文档相对不足每秒10W
Kafka性能高,可用性高丢失数据每秒10多w

五.rocketmq的架构原理

1.mq如何集群化部署支持高并发访问?

一台rocketmq最多能10W并发,如果这时候有大量的请求发送过来怎么办?我们可以部署在多台机器上,然后只要让几十万请求分散到不同机器上即可。

2.mq如果要存储海量数据应该怎么做?

海量数据是通过分布式存储的方式来进行存储的,每台机器上的rocketmq进程一般称之为broker,每个broker会收到不同的消息,然后会把消息存储在本地的磁盘文件中。

这样的话,假设你有1亿条消息,然后有10台机器部署了RocketMQ的Broker,理论上不就可以让每台机器存储1000万条消息了吗?
3.broker宕机了怎么办?
Rocketmq主从架构以及多副本策略来解决这个问题
Broker是由Master和Slave两种角色的 一主一从。
Master收到消息会同步给Slave 这样Slave就会有跟Master一样的数据了。
4.怎么知道访问哪个Broker?
对于生产者或者消费者是不知道要把消息发送到哪个broker上面的,rocketmq为了解决这个问题,提出了NameServer的概念。然后Broker会把自己的信息注册多NameServer上面去。如下图

 

对于生产者或者消费者来说如果他要发送消息到broker上也要通过NameServer来获取

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值