本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本節中的主題描述了哪些 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 支援三種讀取一致性層級:ONE
LOCAL_ONE
、和LOCAL_QUORUM
. 在LOCAL_QUORUM
讀取期間,Amazon Keyspaces 間會傳回反映所有先前成功寫入操作的最新更新的回應。使用一致性層級ONE
或LOCAL_ONE
可以改善讀取要求的效能和可用性,但回應可能不會反映最近完成寫入的結果。
對於使用ONE
或LOCAL_ONE
一致性讀取每 4 KB,您需針對使用佈建容量模式的表格支付 0.5 個讀取容量單位 (RCU) 的費用,或針對使用隨選模式的表格支付 0.5 個讀取請求單位 (RRU) 的費用。對於使用LOCAL_QUORUM
一致性讀取每 4 KB,您需針對使用佈建容量模式的表格支付 1 個讀取容量單位 (RCU) 費用,或針對使用隨選模式的表格支付 1 個讀取請求單位 (RRU) 的費用。
一致性等級 | 佈建 | 隨需 |
---|---|---|
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 |
不支援 |