基于消息队列解耦服务

作者: 山东大葱哥 | 来源:发表于2019-05-18 09:31 被阅读5次

业务场景描述

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

传统方式

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

问题分析

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

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

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

基于消息队列的实现

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


image.png

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

相关文章

  • 基于消息队列解耦服务

    业务场景描述 每日签到,签到后赠送积分。签到和赠送积分分属于开发团队,作为两个微服务开发部署。 传统方式 一般情况...

  • 2019-10-21

    消息中间件MQ 消息队列作用:解耦、异步、削峰 解耦:将消息写入消息队列,需要消息的时候自己从消息队列中订阅,从而...

  • Ⅲ.kafka

    一、定义 基于消息发布与订阅的消息队列中间件。 二、作用 解耦:实现生产端与消费端的解耦削峰:消息峰值时可做缓存,...

  • 消息队列

    消息队列 为什么使用消息队列 使用消息队列的主要场景:解耦、异步、削峰。 解耦 适合场景:系统的数据需要发送给多个...

  • 消息队列和RabbitMQ及AMQP协议介绍

    转自:二月_春风 文章地址 为什么要使用消息队列 异步处理 系统解耦解耦是消息中间队列解决的最本质问题。所谓解耦,...

  • ActiveMQ、RocketMQ、RabbitMQ、Kafka

    一、三大应用场景(优点) 解耦、异步、削峰 解耦:只需要将消息写入消息队列,需要消息的去消息队列中订阅就好 异步:...

  • 基于Redis实现消息队列

    基于Redis实现消息队列 1.业务场景 假设在没有专业消息中间件的情况下,又要通过消息队列去解耦。redis是个...

  • Kafka下游数据出错

    Kafka简单介绍 1.定义 Kafka是个分布式的基于发布/订阅模式的消息队列 消息队列的好处:解耦、可恢复性、...

  • 为什么使用消息队列

    为什么使用消息队列 消息队列的使用场景比较核心的有 3 个:解耦、异步、削峰。 解耦 A 系统发送数据到 BCD ...

  • RabbitMQ零碎整理

    RabbitMQ 概念MQ:消息队列(消息中间件),开源的基于AMQP协议的消息中间件,异步 解耦 削峰核心作用:...

网友评论

    本文标题:基于消息队列解耦服务

    本文链接:https://www.haomeiwen.com/subject/xzhcnqtx.html