开发经验随笔程序员码农的世界

基于消息队列解耦服务

2019-05-18  本文已影响5人  山东大葱哥

业务场景描述

每日签到,签到后赠送积分。签到和赠送积分分属于开发团队,作为两个微服务开发部署。

传统方式

一般情况下,大家都会直接使用微服务的传统调用方式,在每日签到服务中调用积分微服务。

问题分析

我们来看看这种方式可能会有哪些问题?

  1. 积分服务不稳定会影响签到服务
    比如在调用积分服务的时候,如果积分服务响应时间较长,那么在用户端感受就会很差。这其实就是低优先级的服务影响了高优先级的服务。

  2. 签到服务正常,积分服务异常怎么处理
    从业务角度来讲,我们要有先保证用户的签到正常,而积分是否赠送成功我们可以走时间延迟的容忍度。但最终我们还是要保证签到后都赠送积分,这就是最终一致性。某一时刻积分服务不正常,不能影响用户签到,而积分服务正常后我们应该自动完成积分赠送工作,也就是要有重试机制。

基于消息队列的实现

签到服务不应该耦合积分服务,我们需要使用消息队列解耦合,两个服务通过消息队列进行交互。如下图:


image.png

基于消息队列的重试机制,我们能保证积分服务的最终一致性。

上一篇 下一篇

猜你喜欢

热点阅读