美文网首页面试宝典
微服务 - 如何保证接口的幂等性

微服务 - 如何保证接口的幂等性

作者: 撸帝 | 来源:发表于2019-02-28 02:34 被阅读0次

学习完整课程请移步 互联网 Java 全栈工程师

当通过调用创建实例接口在负载均衡中创建云服务器时,如果遇到了请求超时或服务器内部错误时,客户端可能会尝试重发请求,这时客户端可以通过提供可选参数 ClientToken 避免服务器创建出比预期要多的实例,也就是通过提供 ClientToken 参数保证请求的幂等性。ClientToken 是一个由客户端生成的唯一的、大小写敏感、不超过 64 个 ASCII 字符的字符串。

如果用户使用同一个 ClientToken 值调用创建实例接口,则服务端会返回相同的请求结果,包含相同的 InstanceId。因此用户在遇到错误进行重试的时候,可以通过提供相同的 ClientToken 值,来确保负载均衡只创建一个实例,并得到这个实例的 InstanceId。

如果用户提供了一个已经使用过的 ClientToken,但其他请求参数不同,则负载均衡会返回 IdempotentParameterMismatch 的错误代码。但需要注意的是,SignatureNonce、Timestamp 和 Signature 参数在重试时是需要变化的,因为负载均衡使用 SignatureNonce 来防止重放攻击,使用 Timestamp 来标记每次请求时间,所以再次请求必须提供不同的 SignatureNonce 和 Timestamp 参数值,这同时也会导致 Signature 值的变化。

通常,客户端只需要在 500(InternetError)或 503(ServiceUnavailable)错误、或者无法得到响应结果的情况下进行重试操作。返回结果是 200 时,重试可以得到上次相同的结果,但不会对服务端状态带来任何影响。而对 4xx 的返回错误,通常重试也是不能成功的。

相关文章

  • 接口的幂等性的N种考虑

    分布式服务接口的幂等性如何设计 什么是幂等性 一个分布式系统中的某个接口,要保证幂等性,该如何保证?这个事儿其实是...

  • 微服务如何保证接口幂等性

    1. 使用全局唯一ID 在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行(或者是新增操作还是...

  • 微服务 - 如何保证接口的幂等性

    学习完整课程请移步 互联网 Java 全栈工程师 当通过调用创建实例接口在负载均衡中创建云服务器时,如果遇到了请求...

  • 如何保证接口的幂等性

    什么是幂等性 HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时...

  • 如何保证接口的幂等性?

    今天我们来聊聊关于接口的幂等性问题。 什么是幂等性 所谓幂等,就是任意多次执行所产生的影响均与一次执行的影响相同。...

  • 什么是接口的幂等性,如何实现接口幂等性?一文搞定

    每天一个知识点 什么是接口的幂等性,如何实现接口幂等性? (一)幂等性概念 幂等性原本是数学上的概念,用在接口上就...

  • 如何保证服务幂等性?

    1、概念:接口的幂等性实际上就是接口可重复调用,在调用方多次调用的情况下,接口最终得到的结果是-致的。有些接口可以...

  • 保证接口幂等性

    幂等性概念在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是...

  • 保证接口幂等性

    说到幂等性,应该很多人都知道这个词,顾名思义,就是无论操作多少次,产生的结果都是相等的。尤其是交易中,在开发过程中...

  • 高并发下,如何保证接口的幂等性?

    高并发下,如何保证接口的幂等性? 幂等性就是同一个操作执行多次,产生的效果一样。如 http 的 get 请求,数...

网友评论

    本文标题:微服务 - 如何保证接口的幂等性

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