Java Cassandra-监控多个数据中心之间的连接
假设我们有3个地理上分布的数据中心A、B、C。在每一个数据中心中,都有一个Cassandra集群正在运行。现在假设DC A不能再和B和C闲聊了 使用Java Cassandra-监控多个数据中心之间的连接,java,cassandra,client,datastax-java-driver,Java,Cassandra,Client,Datastax Java Driver,假设我们有3个地理上分布的数据中心A、B、C。在每一个数据中心中,都有一个Cassandra集群正在运行。现在假设DC A不能再和B和C闲聊了 使用本地\u QUORUM写入A,仍然可以满足要求-但它们将不再传播到B和C;反之亦然 这种情况可能会有一些非常灾难性的后果 我要寻找的是一些关于如何快速确定DC A已与其他数据中心“隔离”的提示(使用本机Java驱动程序) 我记得读过关于推送通知的文章,但我似乎记得它们只涉及本地集群的状态。有人有什么想法吗?谢谢。首先要注意的是,如果A无法再连接到B和
本地\u QUORUM
写入A,仍然可以满足要求-但它们将不再传播到B和C;反之亦然
这种情况可能会有一些非常灾难性的后果
我要寻找的是一些关于如何快速确定DC A已与其他数据中心“隔离”的提示(使用本机Java驱动程序)
我记得读过关于推送通知的文章,但我似乎记得它们只涉及本地集群的状态。有人有什么想法吗?谢谢。首先要注意的是,如果A无法再连接到B和C,则会在恢复网络连接时存储并发送提示。因此,对于不能持续很长时间的停机,已经有了安全机制,您不需要做任何事情 对于较长时间的停机,最佳做法是在此类停机后使用repair命令同步副本 这就是说,如果您正在寻找确定DC间通信何时中断的方法,您有几种选择 1) 使用诸如Datastax Opscener之类的工具来监视集群状态,该工具将自动发现此类事件何时发生并记录它们。我也相信您能够设置触发事件,但我不是Opscenter工作原理方面的专家 2) 使用Java驱动程序的公共集群寄存器(Host.StateListener listener)注册要在节点关闭事件中调用的函数,然后可以确定整个DC何时关闭
3) 通过JMX跟踪每个DCs上的当前状态,这将允许您查看每个数据中心对所有机器的当前可用性的看法。您可以直接或通过nodetool状态执行此操作。@RussS。。我认为第(2)点在三台主机都无法到达时不起作用
例如,我实现了状态侦听器,并从本地计算机指向集群。。我可以看到,当节点上升/下降时,侦听器会被调用。。但是当我拔下以太时,我看不到这个侦听器被调用。我的目标是,如果DC认为它是孤立的,它将自动停止接受某些写入。2号看起来很有趣。