优点
解耦、异步、削峰
- 解耦 如果系统A将消息发送给B、C等系统,可以通过消息队列发送消息,B、C等系统随用随取;
- 异步 :系统A发送消息之后就返回响应,等到B、C等系统返回业务数据之后,再更新返回响应,不会一直显示等待状态。大幅度增强用户体验感;
- 削峰 :在大量业务需求涌入时,直接操作会对数据库造成很大的冲击,为了避免数据库的宕机,通过引入消息队列,将要处理的数据,存放到消息队列中,待到需求低峰区再执行,有效避免数据库宕机,引起系统崩溃;
缺点
- 系统可用性降低 : 系统可用性在某种程度上降低,在加入消息队列之前,就不会考虑消息丢失等情况
- 系统复杂性提高 : 引入消息队列 之后需要保证消息没有重复调用、消息传递的顺序性等问题
- 一致性问题 : A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,导致数据数据库中数据与理想中数据不一致。