详情页标题前

阿里云ECS云服务器如何保证幂等性-云淘科技

详情页1

您在调用ECS API时,如果发生请求超时或服务器内部错误,客户端可能会尝试发请求。您可以在请求中设置ClientToken参数避免多次重试带来重复操作的问题。

什么是幂等性

在数学计算或者计算机科学中,幂等性(idempotence)是指相同操作或资源在一次或多次请求中具有同样效果的作用。幂等性是在分布式系统设计中具有十分重要的地位。

保证幂等性

通常情况下,客户端只需要在500(InternalError)或503(ServiceUnavailable)错误,或者无法获取响应结果时重试。使用阿里云ECS API,您可以从客户端生成一个参数值不超过64个的ASCII字符,并将值赋予ClientToken,保证重试请求的幂等性。

ClientToken详解

ClientToken参数的详细信息如下所示。

  • ClientToken是一个由客户端生成的唯一的、大小写敏感、不超过64个ASCII字符的字符串。例如,ClientToken=123e4567-e89b-12d3-a456-426655440000
  • 如果您提供了一个已经使用过的ClientToken,但其他请求参数有变化,则ECS会返回IdempotentParameterMismatch的错误代码。


    说明 参数SignatureNonce、Timestamp和Signature在重试时是需要变化的。具体原因是ECS使用SignatureNonce防止重放攻击,使用Timestamp标记每次请求时间。所以再次请求必须提供不同的SignatureNonce和Timestamp参数值,同时也会导致Signature值的变化。

  • 添加了ClientToken参数后:
    • 返回结果是200 HTTPCode时,重试后客户端可以得到与上次相同的结果,但对您的服务端状态没有影响。
    • 返回结果是4xx HTTPCode时,如果错误信息没有表明try it later类似的信息,重试不会成功。您需要根据错误信息排查问题后再重试请求。

幂等请求示例

以RunInstance创建一台ECS实例为例,如果您使用同一个ClientToken值,其他请求参数相同时,则服务端会返回相同的请求结果,只会产生一个InstanceId。

https://ecs.aliyuncs.com/?Action=RunInstances
&RegionId=cn-hangzhou
&InstanceType=ecs.cm4.6xlarge
&ImageId=win2008r2_64_ent_sp1_en-us_40G_alibase_20170915.vhd
&SecurityGroupId=sg-securitygroupid
&Amount=1
.......
&ClientToken=123e4567-e89b-12d3-a456-426655440000
&

如果您不使用ClientToken,在报错重试时,可能会创建多台ECS实例。

API列表

以下为部分包含了ClientToken参数的API,供您参考。具体哪些API支持ClientToken参数请以各API文档为准,此处不一一列举。

  • RunInstances
  • RenewInstance
  • ModifyInstanceNetworkSpec
  • ModifyInstanceChargeType
  • ModifyInstanceSpec
  • ModifyPrepayInstanceSpec
  • CreateInstance
  • CreateDisk
  • ResizeDisk
  • ModifyDiskChargeType
  • ReplaceSystemDisk
  • CreateSnapshot
  • CreateImage
  • CreateNetworkInterface
  • CreateSecurityGroup
  • ModifySecurityGroupEgressRule
  • ModifySecurityGroupPolicy
  • AuthorizeSecurityGroup
  • RevokeSecurityGroup
  • RevokeSecurityGroupEgress
  • AuthorizeSecurityGroupEgress
  • ModifySecurityGroupRule
  • CreateDeploymentSet
  • AssignPrivateIpAddresses
  • CreateHpcCluster
  • DeleteHpcCluster
  • DescribeHpcClusters
  • ModifyHpcClusterAttribute

腾讯云1折,限时活动,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/153311.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。