支持亚马逊密钥空间中的 Apache Cassandra 一致性级别 - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

支持亚马逊密钥空间中的 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 驱动程序时的争论。

读取一致性级别

亚马逊密钥空间支持三个读取一致性级别: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 个 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 不支持