使用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();
答案 0 :(得分:1)
我们对读取和写入有完全不同的要求(读取对延迟数字的SLA非常紧密,写入对于我们快速完成并不重要)。
我们决定拆分会话,我们创建了两个Cluster
个对象,我们创建了两个会话,一个用于读取,一个用于写入。当我们写作时,我们正在使用writeSession
并且我们使用CL QUORUM进行编写,而当我们阅读时,我们使用readSession
来调整延迟要求,使用CL ONE,推测性执行和严格套接字读取超时。
简而言之,您可以为所有写入定义特定会话,并在Cluster对象上定义一致性级别。请注意,这将暗示从驱动程序到Cassandra集群的更多连接。
答案 1 :(得分:0)
可以在群集级别设置一致性,在这种情况下,使用session.execute运行的任何查询都将具有该一致性级别。您还可以将一致性级别设置为session.execute语句本身的一部分。