Tablestore的SDK如何配置自定义重试

本文涉及的产品
表格存储 Tablestore,50G 2个月
简介: 当我们的应用服务遇到网络抖动、服务端进行分区分裂等问题时候,会出现请求超时或者失败。Tablestore的SDK里默认配置支持一些基本的重试逻辑,但是并不能满足所有业务,因此这里介绍一下常见语言的SDK中如何自定义进行重试。JAVA构造Client,传入指定的重试策略。ClientConfiguration clientConfiguration = new ClientConfiguration

当我们的应用服务遇到网络抖动、服务端进行分区分裂等问题时候,会出现请求超时或者失败。Tablestore的SDK里默认配置支持一些基本的重试逻辑,但是并不能满足所有业务,因此这里介绍一下常见语言的SDK中如何自定义进行重试。

JAVA

构造Client,传入指定的重试策略。

ClientConfiguration clientConfiguration = new ClientConfiguration();
RetryStrategy retryStrategy = new AlwaysRetryStrategy(101000);
clientConfiguration.setRetryStrategy(retryStrategy);
SyncClient client = new SyncClient("endpoint""accessId""accessKey""instanceName", clientConfiguration);
AI 代码解读

默认的重试策略,写入操作是不会进行重试的,如果写入也是幂等的,那么可以使用如上所示的AlwaysRetryStrategy重试策略,指定最大重试次数和最大重试间隔(重试间隔会指数增长到最大重试间隔)即可。

当然还可以自定义重试策略:只需要实现RetryStrategy接口即可,自己通过判断action和Exception类型,可以实现哪些异常进行重试,哪些API可以进行重试,具体可以参考RetryStrategy的源码说明以及DefaultRetryStrategy中的实现逻辑

GO

  1. 设置网络相关的一些参数
  2. 实现自定义重试函数。可以根据errorCode、errorMsg、action、httpStatus等信息判断要不要进行重试。
  3. 在构造好client后设置该client的重试策略。
// 设置网络相关的一些参数
var myConfig = &tablestore.TableStoreConfig{
	RetryTimes: 10,
	HTTPTimeout: tablestore.HTTPTimeout{
		ConnectionTimeout: time.Second * 15,
		RequestTimeout:    time.Second * 60},
	MaxRetryTime:       time.Second * 10,
	MaxIdleConnections: 2000,
}


// 自定义重试函数
func MyRetryFunc(errorCode string, errorMsg string, action string, httpStatus int) bool {
	// 如果想要所有都重试,直接返回true
	if strings.Contains(errorCode, "OTSOperationConflict") || strings.Contains(action, "Search") || strings.Contains(action, "PutRow") {
		return true
	}
	return false
}

// 构造自己的client
func newMyClient(endpoint string, instanceName string, accessKeyId string, accessKeySecret string) *tablestore.TableStoreClient {
	var myClient = tablestore.NewClientWithConfig(endpoint, instanceName, accessKeyId, accessKeySecret, "", myConfig)
	myClient.CustomizedRetryFunc = MyRetryFunc
	return myClient
}
AI 代码解读

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
Mac 10.9x下安装配置phonegap3.0开发环境 (涉及android sdk配置)
Mac 10.9x下安装配置phonegap3.0开发环境 (涉及android sdk配置)
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
DataWorks产品使用合集之在数据集成中,对于Tablestore数据源的增量同步,该如何配置
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
10月前
|
在DataWorks的数据集成中,对于Tablestore数据源的增量同步,你可以按照以下步骤进行配置:
在DataWorks的数据集成中,对于Tablestore数据源的增量同步,你可以按照以下步骤进行配置:
91 2
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
133 0
一次RocketMQ ons SDK Bug导致消息不断堆积到重试队列的案例分析
一次RocketMQ ons SDK Bug导致消息不断堆积到重试队列的案例分析
526 1

热门文章

最新文章

  • 1
    揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
    37
  • 2
    大牛直播SDK在四足机器人和无人机巡检中的创新应用方案
    33
  • 3
    基于大牛直播SDK的无纸化同屏会议与智慧教室技术方案
    36
  • 4
    【Azure Service Bus】分享使用 Python Service Bus SDK 输出SDK内操作日志
    86
  • 5
    【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
    29
  • 6
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    145
  • 7
    CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
    65
  • 8
    【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
    37
  • 9
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    77
  • 10
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    189