1.Rabbit是神马
Rabbit是一个在微服务模块中,模块与模块之间进行相互通信,相互调用的一个消息中间件。
2.为什么要使用RabbitMQ
解耦:
我们在做微服务开发中,会涉及到多个模块之间的相互调用。我们以ABCD四个独立运行的模块举个例子。假设现在A系统产生了一条数据,BCD三个系统都需要,这个时候,又新加入了E系统,E系统也需要这个数据,这个时候,C系统又不需要这个数据了。这样一来,对开发和维护A系统的人员是一种折磨啊!!这时候,就采用了RabbitMQ消息队列来解决。A系统产生一条数据,发送到MQ里面去,哪个系统需要数据自己去MQ里面消费。如果新系统需要数据,直接从MQ里面消费即可;如果某个系统不需要这条数据了,就取消对MQ消息的消费即可。这样下来,A系统就不要考虑那些谁要,谁不要的问题了。这就是MQ的第一个好处:解耦。
总结:通过一个MQ,Pub/Sub发布订阅消息这么一个模型,A系统就跟其他系统彻底解耦了。
异步:
第二个场景:A系统接收一条请求,需要在自己本地写库,还需要在BCD三个系统写库,自己本地写库要3 ms,BCD三个系统分别写库要300ms、450ms、200ms,最终的请求就是953ms,这样也好请求一个东西,会感觉很慢。
如果使用MQ,那么A系统连续发送3条消息到MQ队列中,假如耗时5ms,A系统从接受一个请求到返回响应给用户花费8ms,对用户的体验大大提升。
削峰:
假设在一个时间段内,A系统按照正常的效率处理请求(假设是每秒并发请求数量50个),结果在一个时间段内,出现了访问的高峰期,每秒并发请求数量突然暴增到5k+。但是呢,A系统是基于Mysql的,你想想,这么多请求去访问Mysql,一般的Mysql,每秒并发请求数量最多2k,结果就是,Mysql崩溃了,系统也无法正常运行了,用户也没法再使用A系统了。
如果使用MQ队列,每秒5k个请求写入MQ队列中,A系统每秒