gpt4 book ai didi

java - Datastax 驱动程序中 LOCAL_QUORUM 一致性级别的使用

转载 作者:搜寻专家 更新时间:2023-11-01 02:57:49 24 4
gpt4 key购买 nike

出于某些原因,我需要查询我的 cassandra 集群中的特定数据中心。根据the documentation ,我可以使用 LOCAL_QUORUM 一致性级别:

Returns the record after a quorum of replicas in the current datacenter as the coordinator has reported. Avoids latency of inter-datacenter communication.

我是否正确理解,为了为当前查询指定一个特定的数据中心,我必须在属于这个特定 DC 的给定端点上构建一个集群?

比如说,我有两个具有以下节点的 DC:

DC1: 172.0.1.1, 172.0.1.2
DC1: 172.0.2.1, 172.0.2.2

因此,为了使用 DC1,我构建了一个集群:

Cluster cluster = Cluster.builder().addContactPoint("172.0.1.1").build();
Session session = cluster.connect();
Statement statement = session.prepare("select * from ...").bind().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM);
ResultSet resultSet = session.execute(session);

这样做是正确的方法吗?

最佳答案

DCAwwareRoundRobinPolicy 本身将选择它使用“最小网络距离”算法找到的数据中心。为确保它连接到您想要的位置,您应该将 DC 指定为参数。

以下是我告诉我们的开发团队的方法:

Builder builder = Cluster.builder()
.addContactPoints(nodes)
.withQueryOptions(new QueryOptions()
.setConsistencyLevel(ConsistencyLevel.LOCAL_ONE))
.withLoadBalancingPolicy(new TokenAwarePolicy(
new DCAwareRoundRobinPolicy.Builder()
.withLocalDc("DC1").build()))
.withPoolingOptions(options);

注意:这可能适用于您的情况,也可能不适用于您的情况,但我是否建议使用 TokenAwarePolicyDCAwareRoundRobin 嵌套在内部 (指定本地 DC)。这样,任何指定分区键的操作都会自动路由到正确的节点,而无需协调器节点所需的额外跃点。

关于java - Datastax 驱动程序中 LOCAL_QUORUM 一致性级别的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48519462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com