OTSClient是表格存储服务的客户端,它为调用者提供了一系列的方法,可以用来操作表、读写单行数据、读写多行数据等。如果要使用宽表模型的操作数据表、读写单行数据、读写多行数据等功能,您需要初始化一个OTSClient实例,并可以根据需要修改OTSClientConfig的默认配置项;如果要使用时序模型的操作时序表、检索时间线、读写时序数据等功能,您需要初始化一个TimeseriesClient实例。
注意事项
如果要使用HTTPs协议访问表格存储资源,请升级Java环境到Java 7后即可。
表格存储Java SDK支持使用多线程。使用多线程时,建议共用一个OTSClient对象。
准备工作
初始化OTSClient前,您需要完成配置访问密钥、获取实例Endpoint和安装表格存储Java SDK的准备工作。
配置访问密钥
获取实例Endpoint
安装表格存储Java SDK
初始化Client
如果要使用宽表模型,在使用表格存储的SDK时,您必须首先构造一个Client,通过调用该Client的接口来访问表格存储服务,Client的接口与表格存储提供的RestfulAPI是一致的。
表格存储的SDK提供了SyncClient和AsyncClient两种Client,分别对应同步接口和异步接口。同步接口调用完毕后请求即执行完成,使用方便,用户可以先使用同步接口了解表格存储的各种功能。异步接口相比同步接口更加灵活,如果对性能有一定需求,可以在使用异步接口和使用多线程之间做一些取舍。
不管是SyncClient还是AsyncClient,都是线程安全的,且内部会自动管理线程和管理连接资源。不需要为每个线程创建一个Client,也不需要为每个请求创建一个Client,全局创建一个Client即可。
获取到AccessKey ID和AccessKey Secret后,您可以按照如下示例代码初始化Client。
阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。本示例以将AccessKey保存在环境变量中来实现身份验证为例介绍。
为了进一步保证用户密钥的安全,表格存储支持在初始化客户端时使用V4签名算法对用户密钥进行保护,推荐您使用V4签名进行客户端初始化。
关于使用V4签名的更多信息,请参见用户密钥安全。
V4签名
表格存储Java SDK从5.16.1版本开始支持V4签名功能。使用V4签名前,请确保已使用支持该功能的SDK版本。
String region = "";
String endPoint = "";
String accessKeyId = System.getenv("OTS_AK_ENV");
String accessKeySecret = System.getenv("OTS_SK_ENV");
String instanceName = "";
/**
* 构造V4签名的信任凭证。
*/
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret);
V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
/**
* 使用V4签名信任凭证构造OTSClient。
*/
SyncClient client = new SyncClient(endPoint, provider, instanceName, null, new ResourceManager(null, null));
配置参数说明请参见下表。
参数 | 示例 | 说明 |
region | cn-hangzhou | 实例所处地域的ID。更多信息,请参见地域。 |
endPoint | https://myinstance.cn-hangzhou.ots.aliyuncs.com | 实例的访问地址。具体操作,请参见获取实例Endpoint。 |
accessKeyId | System.getenv("OTS_AK_ENV") | 通过环境变量获取AccessKey。 请确保已配置相应环境变量。具体操作,请参见配置访问密钥。 |
accessKeySecret | System.getenv("OTS_SK_ENV") | |
instanceName | myinstance | 实例名称。更多信息,请参见实例。 |
非V4签名
创建SyncClient时支持使用默认配置或者自定义配置,请根据实际选择。
使用默认配置创建SyncClient
final String endPoint = ""; String accessKeyId = System.getenv("OTS_AK_ENV"); String accessKeySecret = System.getenv("OTS_SK_ENV"); final String instanceName = ""; SyncClient client = new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName);
配置参数说明请参见下表。
参数
示例
说明
endPoint
https://myinstance.cn-hangzhou.ots.aliyuncs.com
实例的访问地址。具体操作,请参见获取实例Endpoint。
accessKeyId
System.getenv("OTS_AK_ENV")
通过环境变量获取AccessKey。
请确保已配置相应环境变量。具体操作,请参见配置访问密钥。
accessKeySecret
System.getenv("OTS_SK_ENV")
instanceName
myinstance
实例名称。更多信息,请参见实例。
使用自定义配置创建SyncClient
// ClientConfiguration提供了很多配置项,以下只列举部分。 ClientConfiguration clientConfiguration = new ClientConfiguration(); // 设置建立连接的超时时间。单位为毫秒。 clientConfiguration.setConnectionTimeoutInMillisecond(5000); // 设置socket超时时间。单位为毫秒。 clientConfiguration.setSocketTimeoutInMillisecond(5000); // 设置重试策略。如果不设置,则采用默认的重试策略。 clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy()); SyncClient client = new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName, clientConfiguration);
初始化TimeseriesClient
如果要使用时序模型,在使用表格存储的SDK时,您需要初始化一个TimeseriesClient实例,通过调用该TimeseriesClient的接口来访问表格存储服务。时序模型需要初始化单独的Client。
表格存储的SDK提供了TimeseriesClient和AsyncTimeseriesClient两种TimeseriesClient,分别对应同步接口和异步接口。
获取到AccessKey ID和AccessKey Secret后,您可以按照如下示例代码初始化TimeseriesClient。
使用默认配置创建TimeseriesClient
final String endPoint = "";
String accessKeyId = System.getenv("OTS_AK_ENV");
String accessKeySecret = System.getenv("OTS_SK_ENV");
final String instanceName = "";
TimeseriesClient client = new TimeseriesClient(endPoint, accessKeyId, accessKeySecret, instanceName);
配置参数说明请参见下表。
参数 | 示例 | 说明 |
endPoint | https://myinstance.cn-hangzhou.ots.aliyuncs.com | 实例的访问地址。具体操作,请参见获取实例Endpoint。 |
accessKeyId | System.getenv("OTS_AK_ENV") | 通过环境变量获取AccessKey。 请确保已配置相应环境变量。具体操作,请参见配置访问密钥。 |
accessKeySecret | System.getenv("OTS_SK_ENV") | |
instanceName | myinstance | 实例名称。更多信息,请参见实例。 |
使用自定义配置创建TimeseriesClient
// ClientConfiguration提供了很多配置项,以下只列举部分。
ClientConfiguration clientConfiguration = new ClientConfiguration();
// 设置建立连接的超时时间。单位为毫秒。
clientConfiguration.setConnectionTimeoutInMillisecond(5000);
// 设置socket超时时间。单位为毫秒。
clientConfiguration.setSocketTimeoutInMillisecond(5000);
// 设置重试策略。如果不设置,则采用默认的重试策略。
clientConfiguration.setRetryStrategy(new AlwaysRetryStrategy());
TimeseriesClient client = new TimeseriesClient(endPoint, accessKeyId, accessKeySecret, instanceName, clientConfiguration);
常见问题
- 本页导读 (1)