langjitianyaluotongxue

导航

为什么要用MQ?

1 - 解耦
A系统调B C D 系统,如果新加一个系统E也需要A系统传的数据,C系统不需要A系统调用,这样A系统就会不停的改代码,很崩溃,可以让A系统把消息发送到MQ里,哪个系统需要就去订阅消费,A系统不用再关心有没有调用失败或者成功,其他系统不需要A系统数据直接取消订阅不消费即可

 

 

2 - 异步
比如客户调用A系统,A系统作用数据库是3ms,同时需要调用B C D系统也进行数据库的一系列操作,时间分别是 3ms,5ms,10ms,这样全部调用完后才给客户返回,时间会很长,客户的体验不好,如果在A系统后加MQ,客户请求A系统后,A系统发送MQ消息耗时5ms后直接给客户返回响应,这样客户只感受到3ms +5ms = 8ms是无感知的,感觉这个网站真的很顺畅,做的真好,B C D 系统自动去消费,然后操作数据库

 

 

 

 

 

3 - 削峰
比如一个网站每天中午12点到12点30分是用户访问高峰期,每秒的并发请求是5千次。系统A是直接基于Mysql的,大量的请求涌入Mysql,每秒对Mysql执行5k条sql,但是数据库可能能抗的最大的并发只有2k条,这里数据库就会被大并发打死崩掉,系统崩溃用户也就用不了,但是过了这个时间点请求就会下降到每秒50个,所以可以在请求A系统之前加MQ,让请求发送到MQ里,这样A系统每秒从MQ拉取数据库可允许范围内的2k请求访问数据库,虽然每秒MQ会进来5k请求,消费2k消息,这半个小时会有消息积压,但是过了这个高峰期,请求就只有几十个,系统A每秒2k条消费,很快就会消费完积压的消息,这样就实现了流量的削峰

 

 

posted on 2022-08-15 23:11  浪迹天涯骆同学  阅读(56)  评论(0编辑  收藏  举报