一、消息队列--mq的优缺点

一、优点

1、解耦

耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。 解耦就是用数学方法将两种运动分离开来处理问题,常用解耦方法就是忽略或简化对所研究问题影响较小的一种运动,只分析主要的运动。

使用mq可以让各自处理自己需要处理的业务,不受其它的影响。

2、异步

与同步相对应,异步指的是让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后,开始运行。多线程将异步操作放入另一线程中运行,通过轮询或回调方法得到完成通知,但是完成端口,由操作系统接管异步操作的调度,通过硬件中断,在完成时触发回调方法,此方式不需要占用额外线程

业务处理较多时,如果使用同步处理的方式,等一个个业务处理完,可能耗时过长,影响用户体验,使用mq将要处理的业务交给不同的服务异步处理,可以节省处理时间。

3、削峰

流量削峰,如果观看抽奖或秒杀系统的请求监控曲线,你就会发现这类系统在活动开放的时间段内会出现一个波峰,而在活动未开放时,系统的请求量、机器负载一般都是比较平稳的。为了节省机器资源,我们不可能时时都提供最大化的资源能力来支持短时间的高峰请求。所以需要使用一些技术手段,来削弱瞬时的请求高峰,让系统吞吐量在高峰请求下保持可控。

mq consumer控制时间段内消费的消息数量,来做到削峰,来保证服务的稳定性。

二、缺点

1、系统复杂度增加

异步处理虽然好用,但也带来了一些新问题,如何保证消息的顺序?如何避免重复消息的影响?

2、出现数据一致性问题

同一个业务请求,多条消息异步执行时,如何保证数据一致性?(分布式事务、分布式锁需要了解一下)

你可能感兴趣的:(java,java,开发语言,后端)