分布式系统中的接口调用如何保证顺序性

业务场景:有三个连续的请求,必须保证其顺序性

第一种方案:通过redis记录

点评:这种方法太重,阻塞的接口会压榨服务器的并发数/吞吐量,只有当请求1失败后其他两个才能释放。

绝对不能本地阻塞,否则多到调用几次整个服务就奔溃了,可以将内容先入库,然后MQ将消息推出去,等会再进行处理,记录失败次数,以此达到一致。

第二种方案:前端串行请求

 

在不追求高服务体验的时候可以限制下一个请求,当请求1没有处理完成前,前端不会发送第二个请求,并且后端系统在接收到请求2时直接返回错误信息,也可以在前端建立一个队列,按顺序发送请求至后端,后端系统只需要判断顺序是否正常即可。

 

第三种方案:前置服务

 

 

第四种方案:MQ

 

当集群B消费到请求3时,若请求1还未被消费那么集群B直接将消息抛错,扔还给MQ稍后重试,可以通过数据库或redis判断目前消息的执行顺序。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值