使用场景(优势)
1.解耦
使用场景:<br>向外提供数据服务,与多个服务存在调用关系。<br>
引入原因:<br>(1)无需根据接入方的接口标准定制开发数据接口,可以避免接入一个服务就要开发一类<br>接口的问题;<br>(2)上下游服务通过消息中间件生产、消费数据,无直接调用关系,一方服务变动时(消息结构不变)不会<br>影响另一方服务的运行。<br><br>
2.异步
使用场景:<br>与多个服务存在调用关系,对服务响应时间有较高的要求。
引入原因:<br>(1)不用等待下游服务处理完成,可直接返回服务状态。<br>
3.削峰
使用场景:<br>请求高并发
引入原因:<br>(1)请求入中间件,分次消费、处理请求,来减少服务压力。
需考虑的问题
1.系统的可用性降低
mq服务状态也会影响系统的可用性,mq挂掉了,也会导致服务对应的功能不可用
2.系统的复杂度提高
技术实现上:服务需添加mq基础API的代码,还要考虑消息重复消费、消息按顺序传递、消息丢失等问题<br>
3.服务间数据的一致性难以保证
需确定下游服务对消息的消费状态,来保证多个服务数据的一致性