我有一个带有单一复制的cassandra 2数据中心对,每个数据中心包含一个节点,每个数据中心位于网络上不同的物理服务器上。如果一个数据中心崩溃,另一个数据中心将继续可供读取和写入。我在第三个服务器上启动了我的java应用程序,它的一切运行正常。它正在对cassandra进行读写。
接下来,我断开了连接,从网络中拔出了第二台数据中心服务器的网线。我希望应用程序能够继续运行,没有任何异常发生在第一个数据中心,但事实并非如此。
应用程序中开始出现以下异常:
me.prettyprint.hector.api.exceptions.HUnavailableException: : May not b
我有客户端-服务器模式和3个数据中心(A、B、C)。服务器集群的位置如下:A和B各有2个节点,C有1个节点。
我在数据中心A和C之间拆分了网络
A
/ X
B - C
在这种情况下,A中的客户端无法将数据写入节点C,但C中的节点仍处于活动状态,因为它看到B中的2个成员并形成quorum (3/5)。在完全网络隔离的情况下,C中的节点宕机,集群重新平衡分区,它工作得很好。
在这种部分网络分裂的场景下,是否可以让集群对来自客户端的写请求具有更强的容错性?
我的akka集群中有很多工作节点,由于它们的不稳定性,这会导致Down all when unstable决策;但是它们不具有SBR的作用。
为什么不根据Down all when unstable的角色做出Down all when unstable决策?为了解决这个问题,我应该有不同的集群还是使用多DC集群?