如何使用 Datastax java 驱动程序显式设置 WRITE 一致性?

How to set WRITE consistency explicitly with Datastax java driver?

使用 datastax java 驱动程序连接到 Cassandra,我希望显式设置 WRITE 一致性,但似乎我们只能为查询设置一致性级别。下面是示例代码。我如何提及驱动杆的写入一致性?

Cluster cluster = Cluster
                        .builder()
                        .addContactPoint(host)
                        .withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.ONE))
                        .withRetryPolicy(DefaultRetryPolicy.INSTANCE)
                        .withCredentials(userName,password)
                        .withLoadBalancingPolicy(
                                new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
                        .build();

可以在集群级别设置一致性,在这种情况下,任何 运行 和 session.execute 的查询都将具有该一致性级别。您还可以将一致性级别设置为 session.execute 语句本身的一部分。

我们对读取和写入有完全不同的要求(读取在延迟数量方面有非常严格的 SLA,而写入对于我们快速完成并不重要)。

我们决定拆分会话,我们创建了两个 Cluster 对象,并在其中创建了两个会话,一个用于读取,一个用于写入。当我们写入时,我们使用 writeSession 并使用 CL QUORUM 写入,而当我们读取时,我们使用 readSession,它针对延迟要求进行了调整,具有 CL ONE、推测执行和紧套接字读取超时。

长话短说,您可以为所有写入定义特定的会话,并在 Cluster 对象上定义一致性级别。请注意,这将涉及从驱动程序到 Cassandra 集群的更多连接。