支持 Apache 卡桑德拉讀寫一致性級別和相關成本 - Amazon Keyspaces (適用於 Apache Cassandra)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

支持 Apache 卡桑德拉讀寫一致性級別和相關成本

本節中的主題描述了哪些 Apache 卡桑德拉一致性級別支持讀取和寫入操作 Amazon Keyspaces(Apache 卡桑德拉)。

寫入一致性層級

Amazon Keyspaces 會跨多個可用區域複寫所有寫入操作三次,以提高耐用性和高可用性。在使用LOCAL_QUORUM一致性層級確認寫入之前,會持久儲存。對於每 1 KB 寫入,您需針對使用佈建容量模式的表格支付 1 個寫入容量單位 (WCU) 的費用,或針對使用隨選模式的表格支付 1 個寫入請求單位 (WRU) 的費用。

您可以使用cqlsh將目前工作階段中所有查詢的一致性設定為LOCAL_QUORUM使用下列程式碼。

CONSISTENCY LOCAL_QUORUM;

要以編程方式配置一致性級別,可以使用適當的 Cassandra 客戶端驅動程序設置一致性。例如,4.x 版 Java 驅動程序允許您在app config文件中設置一致性級別,如下圖所示。

basic.request.consistency = LOCAL_QUORUM

如果您使用的是 3.x 版 Java Cassandra 驅動程序,則可以通過添加指定會話的一致性級別,如下面的代碼示.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM)例所示。

Session session = Cluster.builder() .addContactPoint(endPoint) .withPort(portNumber) .withAuthProvider(new SigV4AuthProvider("us-east-2")) .withSSL() .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM) .build() .connect();

若要設定特定寫入作業的一致性層級,您可以在使用 Java 驅動程式時使用setConsistencyLevel引數呼叫QueryBuilder.insertInto時定義一致性。

讀取一致性等級

Amazon Keyspaces 支援三種讀取一致性層級:ONELOCAL_ONE、和LOCAL_QUORUM. 在LOCAL_QUORUM讀取期間,Amazon Keyspaces 間會傳回反映所有先前成功寫入操作的最新更新的回應。使用一致性層級ONELOCAL_ONE可以改善讀取要求的效能和可用性,但回應可能不會反映最近完成寫入的結果。

對於使用ONELOCAL_ONE一致性讀取每 4 KB,您需針對使用佈建容量模式的表格支付 0.5 個讀取容量單位 (RCU) 的費用,或針對使用隨選模式的表格支付 0.5 個讀取請求單位 (RRU) 的費用。對於使用LOCAL_QUORUM一致性讀取每 4 KB,您需針對使用佈建容量模式的表格支付 1 個讀取容量單位 (RCU) 費用,或針對使用隨選模式的表格支付 1 個讀取請求單位 (RRU) 的費用。

根據每個 4 KB 讀取的每個表格的讀取一致性和讀取容量輸送量模式計費
一致性等級 佈建 隨需
ONE 0.5 RCU 0.5 RUS
LOCAL_ONE 0.5 RCU 0.5 RUS
LOCAL_QUORUM 1 RCU 1 RRU

若要為讀取作業指定不同的一致性,請在使QueryBuilder.select用 Java 驅動程式時使用setConsistencyLevel引數呼叫。

不支援的一致性

Amazon Keyspaces 不支援下列一致性層級,並會導致例外狀況。

不支援的一致性
阿帕奇·卡桑德拉 Amazon Keyspaces
EACH_QUORUM 不支援
QUORUM 不支援
ALL 不支援
TWO 不支援
THREE 不支援
ANY 不支援
SERIAL 不支援
LOCAL_SERIAL 不支援