cassandra随机获取数据_Cassandra学习与实践(六)——数据读写原理

本文详细介绍了Cassandra的数据读写原理,包括客户端如何连接到数据节点、负载均衡策略、协调者角色以及数据如何写入和读取。重点讲解了联系点、负载平衡策略以及不同一致性级别下的读写操作,强调了在多数据中心部署中的考虑和优化措施。
摘要由CSDN通过智能技术生成

参考资料

如何连接到一个数据节点

一个客户端请求会连接集群上的哪个节点由客户端driver的配置决定

如果使用Datastax drivers,主要由下面这两个客户端配置决定连接到哪个节点:Contact points

Load balancing policies

Contact Points

Contact points设置的值是一个或者多个节点IP的列表,当driver在客户端创建Cluster实例时,driver首先会按照指定的顺序尝试连接contact points中的节点地址。如果第一个节点连接失败,则尝试连接第二个。只要任何一个节点连接成功,则停止尝试连接后面的节点地址

为什么此时不需要连接所有的节点,是因为集群中的任何一个节点都保存了集群上所有节点的元数据,也就是说,只要连上一个节点,driver就能得到所有其他节点的配置信息。接下来,driver会使用获得到所有节点的配置信息构造连接池(构造连接池的时候,driver会连接所有的节点,但是,不是根据contact points中指定的节点地址,而是根据从服务端获得的所有节点的元数据)。这也意味着,contact points设置中,不必要指定集群中所有节点的地址

最佳实践是,在contact points中设置相对于客户端响应最快的所有节点的地址

Cluster cluster = Cluster

.builder()

.addContactPoints("127.0.0.1", "127.0.0.2")

.withloadBalancingPolicy(Policies.defaultLoadBalancingPolicy())

.build();

Session session = cluster.connect();

Load Balancing Policies

默认情况下,一个客户端的Cluster实例管理了集群中所有节点的连接,并且,将客户端请求随机连接到任意节点。不过,在某些情况下,尤其是多数据中心时,默认行为的性能可能不是最优的

例如,如果集群包含两个数据中心,一个在中国,一个在美国。如果客户端在中国,那么,应该避免直接连接美国的节点,不然太慢

Cluster实例的Load balancing policies设置,决定了,客户端请求如何分配节点的连接

Datastax

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值