本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
支持亚马逊密钥空间中的 Apache Cassandra 一致性级别
本节中的主题描述了亚马逊密钥空间(适用于 Apache Cassandra)中的读取和写入操作支持哪些 Apache Cassandra 一致性级别。
写入一致性级别
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();
要为特定的写入操作配置一致性级别,可以在调用时定义一致性QueryBuilder.insertInto
用一个setConsistencyLevel
使用 Java 驱动程序时的争论。
读取一致性级别
亚马逊密钥空间支持三个读取一致性级别: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) 的费用。
根据每个表的读取一致性和读取容量吞吐量模式对每个 4 KB 的读取操作进行计费 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
一致性级别 | 已预置 | 按需 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ONE |
0.5 个 RCU | 0.5 个 RRU | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCAL_ONE |
0.5 个 RCU | 0.5 个 RRU | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCAL_QUORUM |
1 个 RCU | 1 个 RRU |
要为读取操作指定不同的一致性,请调用QueryBuilder.select
用一个setConsistencyLevel
使用 Java 驱动程序时的争论。
不受支持的一致性级别
Amazon Keyspaces 不支持以下一致性级别,这将导致异常。
不受支持的一致性级别 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Apache Cassandra | Amazon Keyspaces | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EACH_QUORUM |
不支持 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
QUORUM |
不支持 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ALL
|
不支持 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TWO |
不支持 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
THREE |
不支持 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ANY |
不支持 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SERIAL |
不支持 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCAL_SERIAL |
不支持 |