如何保证接口的幂等性

小灰灰 2020-04-29 23:39 945阅读 0赞

如何保证接口的幂等性

当通过调用创建实例接口在负载均衡中创建云服务器时,如果遇到了请求超时或服务器内部错误时,客户端可能会尝试重发请求,这时客户端可以通过提供可选参数 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 的返回错误,通常重试也是不能成功的。

发表评论

表情:
评论列表 (有 0 条评论,945人围观)

还没有评论,来说两句吧...

相关阅读

    相关 如何保证接口

    为什么需要保证接口幂等性 因为在很多业务场景中,为了保证业务正确性,往往会出现重复请求或着重复消息的情况。特别是在分布式系统中,由于网络不稳定或者负载均衡等原因,可能会出

    相关 接口如何保证

    1. 接口调用存在的问题 现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就

    相关 如何保证

    因为申请较晚,本公众号没留言,想交流的欢迎添加私人微信,一起相互吹捧,共同进步。![c58d1b29dad33f508ff4934d8c13f606.png][]1 幂等性

    相关 保证接口

    什么是幂等 幂等性:其实就是数据一致性和事务完整性 数学上的定义:f(f(x))=f(x)。x被函数f作用一次和作用无限次的结果是一样的。幂等性应用在软件系统中,可以

    相关 如何保证接口

    什么是幂等性 HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的

    相关 如何保证接口

    当通过调用创建实例接口在负载均衡中创建云服务器时,如果遇到了请求超时或服务器内部错误时,客户端可能会尝试重发请求,这时客户端可以通过提供可选参数 ClientToken ...