Cassandra如何设计以避免需要负载平衡器?

时间:2018-05-17 21:46:26

标签: cassandra datastax-enterprise

我是从official DSE doc读到的,但它没有深入探究如何。有人可以解释或提供任何链接吗?

2 个答案:

答案 0 :(得分:3)

最好查看architecture guide这类信息。

有多个地方可以被视为某种负载均衡器。首先 - 您可以将请求发送到群集中的任何节点,此节点将作为“协调器”工作,将请求重新发送到实际拥有该数据的节点。因为这不是非常优化,所以驱动程序提供所谓的令牌感知负载平衡策略,其中驱动程序能够从数据推断,哪些节点负责处理它们,并将请求发送到其中一个节点,根据其他信息选择(由其他负载平衡策略提供)。

如果是多个数据中心,驱动程序和如果“本地”不可用,Cassandra本身能够向“远程”DC发送请求(远程和本地的概念特定于消费者)。但在这种情况下,其他一些因素将发挥作用 - 例如,如果您具有LOCAL_一致性级别,那么您的请求将不会发送到“远程”数据中心。

谈论应用程序设计 - 您可以在应用程序层之前使用负载均衡器,它将连接到“本地”数据中心的Cassandra集群,并使用LOCAL_一致性级别来执行其操作。如果其中一个DC停机,负载均衡器应停止向该DC中的应用层发送流量。

答案 1 :(得分:2)

负载均衡器内置于驱动程序/连接。例如,Java驱动程序" roundrobin"行为在这里的文档中解释:

https://docs.datastax.com/en/developer/java-driver-dse/1.6/manual/load_balancing/

此处还解释:

https://docs.datastax.com/en/developer/java-driver/3.1/manual/load_balancing/