Table Store的用戶端為調用者提供了一系列的方法,可以用來動作表、單行資料、多行資料等。
確定Endpoint
Endpoint是阿里雲Table Store服務在各個地區的網域名稱地址,目前支援下列形式。
樣本 | 描述 |
---|---|
http://sun.cn-hangzhou.ots.aliyuncs.com |
HTTP 協議,公網網路訪問杭州地區的 sun 執行個體。 |
https://sun.cn-hangzhou.ots.aliyuncs.com |
HTTPS 協議,公網網路訪問杭州地區的 sun 執行個體。 |
说明
- Table Store支援公網訪問,也支援私網地址。
- 您可以登入Table Store控制台,進入執行個體詳情頁,執行個體訪問地址即是該執行個體的 Endpoint。
配置密鑰
要接入阿里雲Table Store服務,您需要擁有一個有效存取金鑰進行簽名認證。目前支援下面三種方式:
-
主帳號的 AccessKeyId 和 AccessKeySecret。建立步驟如下:
- 在阿里雲官網註冊阿里雲帳號。
- 登入AccessKey管理主控台建立 AccessKeyId 和 AccessKeySecret。
-
被授予訪問Table Store許可權的子帳號的 AccessKeyId 和 AccesskeySecret。建立步驟如下:
- 使用主帳號前往存取控制 RAM,建立一個新的子帳號或者使用已經存在的子帳號。
- 使用主帳號授予子帳號訪問Table Store的許可權。
- 子帳號被授權後,就可以使用自己的 AccessKeyId 和 AccessKeySecret 訪問了。
-
臨時訪問的 STS token。擷取步驟如下:
- 應用的伺服器通過訪問 RAM/STS 服務,擷取一個臨時的 AccesskeyId、AccesskeySecret 和 token,發送給使用方。
- 使用方使用上述臨時密鑰訪問Table Store服務。
建立Client
使用者使用Table Store的 SDK 時,必須首先構造一個 Client,通過調用這個 Client 的介面來訪問Table Store服務,Client 的介面與Table Store提供的 RESTful API 是一致的。
Client類型
Table Store C++ SDK 提供兩種 Client,SyncClient 和 AsyncClient,分別對應同步介面和非同步介面。
-
同步介面:調用完畢後請求即執行完成,使用方便,使用者可以先使用同步介面瞭解Table Store的各種功能。
-
非同步介面:相比同步介面更加靈活,如果對效能有一定需求,可以在使用非同步介面和使用多線程之間做一些取捨。
说明 不管是 SyncClient 還是 AsyncClient,都是安全執行緒的,且內部會自動管理線程和管理串連資源。不需要為每個線程建立一個Client,也不需要為每個請求建立一個Client,全域建立一個 Client 即可。
同步介面
-
直接建立(即使用Table Store Endpoint建立Client)
Endpoint ep("YourEndpoint", "YourInstance"); Credential cr("AccessKeyId", "AccessKeySecret"); ClientOptions opts; SyncClient* client = NULL; Optional<OTSError> res = SyncClient::create(client, ep, cr, opts);
说明 建議您避免使用主帳號的AcceessKey來訪問Table Store,推薦使用臨時令牌或者子帳號的AccessKey。如果使用臨時令牌STS,上述代碼中的Credential對象需要修改為:Credential cr("AccessKeyId", "AccessKeySecret", "SecurityToken");
。ClientOptions中包含的配置項說明如下,您可以使用預設值,也可以自訂參數。
mMaxConnections 最大串連數,同時也是最大並發請求數。SDK和Table Store服務端保持著長串連。每次有一個新的請求都會從閑置的串連裡隨機挑一個來發送請求。 mConnectTimeout 連線逾時時間。考慮到DNS解析的時間,建議連線逾時時間不短於10秒。 mRequestTimeout 請求逾時時間。 mRetryStrategy 重試策略。預設的重試策略會在10秒內重試失敗的等冪請求。您可以定義自己的重試策略。 mLogger 日誌記錄器。預設的日誌記錄器輸出到標準錯誤上。建議您定義自己的日誌記錄器。 mActors 線程池。用於執行您回調的線程池。預設10根線程。 - 從AsyncClient建立
AsyncClient& async = ...; SyncClient* sync = SyncClient::create(async);
非同步介面
非同步介面Client的建立和使用,請參見非同步介面。
多線程
支援多線程。使用多線程時,建議共用一個用戶端對象。