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

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

Amazon Keyspaces 中支持的 Apache Cassandra 一致性级别

此部分中的主题介绍了 Amazon Keyspaces(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();

要为特定的写入操作配置一致性级别,可以在使用 Java 驱动程序时使用 setConsistencyLevel 参数调用 QueryBuilder.insertInto 时定义一致性。

读取一致性级别

Amazon Keyspaces 支持三个读取一致性级别:ONELOCAL_ONELOCAL_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

要为读取操作指定不同的一致性,请在使用 Java 驱动程序时使用 setConsistencyLevel 参数调用 QueryBuilder.select

不受支持的一致性级别

以下一致性级别不受 Amazon Keyspaces 的支持,并且将导致异常。

不受支持的一致性级别
Apache Cassandra Amazon Keyspaces
EACH_QUORUM 不支持
QUORUM 不支持
ALL 不支持
TWO 不支持
THREE 不支持
ANY 不支持
SERIAL 不支持
LOCAL_SERIAL 不支持