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

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

第一种方案:通过redis记录

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

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

 

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

 

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

 

第三种方案:前置服务

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

 

第四种方案:MQ

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

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