OTSClient是Tablestore服務的用戶端,它為調用者提供了一系列的方法,可以用來動作表、讀寫單行資料、讀寫多行資料等。使用Java SDK發起Table Store的請求,您需要初始化一個OTSClient執行個體,並根據需要修改ClientConfiguration的預設配置項。如果要使用時序模型,您需要初始化TimeseriesClient。

確定Endpoint

Endpoint是阿里雲Tablestore服務各個執行個體的網域名稱地址,目前支援下列形式。

樣本解釋
http://sun.cn-hangzhou.ots.aliyuncs.comHTTP協議,公網網路訪問杭州地區的sun執行個體。
https://sun.cn-hangzhou.ots.aliyuncs.comHTTPS協議,公網網路訪問杭州地區的sun執行個體。
重要 除了公網可以訪問外,也支援私網地址。更多資訊,請參見服務地址

請按照如下步驟擷取執行個體的Endpoint:

  1. 登入Tablestore管理主控台。
  2. 概覽頁面,單擊執行個體名稱。
  3. 執行個體詳情頁簽的執行個體訪問地址地區即可查看該執行個體的服務地址(Endpoint)。
    fig_endpoint

配置密鑰

要接入阿里雲的Tablestore服務,您需要擁有一個有效存取金鑰進行簽名認證。目前支援下面三種方式:

重要 為避免阿里雲帳號泄露AccessKey帶來的安全風險,建議您通過RAM使用者來完成授權和AccessKey的建立。
  • 阿里雲帳號的AccessKey ID和AccessKey Secret。建立步驟如下:
    1. 在阿里雲官網註冊阿里雲帳號
    2. 建立AccessKey ID和AccessKey Secret。具體操作,請參見擷取AccessKey
  • 被授予訪問Tablestore許可權RAM使用者的AccessKey ID和AccessKey Secret。建立步驟如下:
    1. 使用阿里雲帳號前往存取控制RAM,建立一個新的RAM使用者或者使用已經存在的RAM使用者。
    2. 使用阿里雲帳號授予RAM使用者訪問Table Store的許可權。
    3. RAM使用者被授權後,即可使用自己的AccessKey ID和AccessKey Secret訪問。
  • 從STS擷取的臨時訪問憑證。擷取步驟如下:
    1. 應用的伺服器通過訪問RAM/STS服務,擷取一個臨時的AccessKey ID、AccessKey Secret和SecurityToken發送給使用方。
    2. 使用方使用上述臨時密鑰訪問Table Store服務。

配置環境變數

請根據使用的作業系統執行相應操作配置環境變數。

Tablestore使用OTS_AK_ENV環境變數名表示阿里雲帳號或者RAM使用者的AccessKey ID,使用OTS_SK_ENV環境變數名表示對應AccessKey Secret,請根據實際配置。

  • Linux和macOS系統配置方法

    執行如下命令配置環境變數。其中<access_key_id>請替換為已準備好的AccessKey ID,<access_key_secret>請替換為對應的AccessKey Secret。

    export OTS_AK_ENV=<access_key_id>
    export OTS_SK_ENV=<access_key_secret>
  • Windows系統配置方法

    建立環境變數檔案,並在檔案中添加環境變數OTS_AK_ENV和OTS_SK_ENV,然後環境變數分別配置為已準備好的AccessKey ID和AccessKey Secret,最後重啟Windows系統使配置生效。

初始化Client

使用者使用Tablestore的SDK時,必須首先構造一個Client,通過調用該Client的介面來訪問Tablestore服務,Client的介面與Tablestore提供的RestfulAPI是一致的。

Tablestore的SDK提供了SyncClient和AsyncClient兩種Client,分別對應同步介面和非同步介面。同步介面調用完畢後請求即執行完成,使用方便,使用者可以先使用同步介面瞭解Tablestore的各種功能。非同步介面相比同步介面更加靈活,如果對效能有一定需求,可以在使用非同步介面和使用多線程之間做一些取捨。

说明 不管是SyncClient還是AsyncClient,都是安全執行緒的,且內部會自動管理線程和管理串連資源。不需要為每個線程建立一個Client,也不需要為每個請求建立一個Client,全域建立一個Client即可。

擷取到AccessKey ID和AccessKey Secret後,您可以按照如下範例程式碼初始化Client。

重要 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。本樣本以將AccessKey儲存在環境變數中來實現身分識別驗證為例介紹。
  • 使用預設配置建立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);                        

    配置參數說明請參見下表。

    參數樣本說明
    endPointhttps://myinstance.cn-hangzhou.ots.aliyuncs.com執行個體的服務地址。擷取操作請參見確定Endpoint
    accessKeyIdSystem.getEnv("OTS_AK_ENV")通過環境變數擷取。

    請確保已配置相應環境變數。具體配置操作,請參見配置環境變數

    accessKeySecretSystem.getEnv("OTS_SK_ENV")
    instanceNamemyinstance執行個體名稱。更多資訊,請參見執行個體
  • 使用自訂配置建立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

如果要使用時序模型,請初始化TimeseriesClient,時序模型需要初始化單獨的Client。

Table Store的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);

    配置參數說明請參見下表。

    參數樣本說明
    endPointhttps://myinstance.cn-hangzhou.ots.aliyuncs.com執行個體的服務地址。擷取操作請參見確定Endpoint
    accessKeyIdSystem.getEnv("OTS_AK_ENV")通過環境變數擷取。

    請確保已配置相應環境變數。具體配置操作,請參見配置環境變數

    accessKeySecretSystem.getEnv("OTS_SK_ENV")
    instanceNamemyinstance執行個體名稱。更多資訊,請參見執行個體
  • 使用自訂配置建立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);

HTTPS

升級到java 7後即可。

多線程

  • 支援多線程。
  • 使用多線程時,建議共用一個OTSClient對象。