基于消息队列解耦服务
2019-05-18 本文已影响5人
山东大葱哥
业务场景描述
每日签到,签到后赠送积分。签到和赠送积分分属于开发团队,作为两个微服务开发部署。
传统方式
一般情况下,大家都会直接使用微服务的传统调用方式,在每日签到服务中调用积分微服务。
问题分析
我们来看看这种方式可能会有哪些问题?
-
积分服务不稳定会影响签到服务
比如在调用积分服务的时候,如果积分服务响应时间较长,那么在用户端感受就会很差。这其实就是低优先级的服务影响了高优先级的服务。 -
签到服务正常,积分服务异常怎么处理
从业务角度来讲,我们要有先保证用户的签到正常,而积分是否赠送成功我们可以走时间延迟的容忍度。但最终我们还是要保证签到后都赠送积分,这就是最终一致性。某一时刻积分服务不正常,不能影响用户签到,而积分服务正常后我们应该自动完成积分赠送工作,也就是要有重试机制。
基于消息队列的实现
签到服务不应该耦合积分服务,我们需要使用消息队列解耦合,两个服务通过消息队列进行交互。如下图:
![](https://img.haomeiwen.com/i7528671/8e40bc4fdc13b63e.png)
基于消息队列的重试机制,我们能保证积分服务的最终一致性。