我们在两个处理器上部署了一个隔离的Java应用程序,主要用于在主处理器发生故障时进行故障转移。让我们称它们为处理器A和B.该架构目前有一组在A上运行的进程和在A和B上运行的Oracle数据库,其中流配置为使它们保持同步。如果A发生故障,将在B上启动进程以接管并使用B上的数据库。
然后,当A重新启动时,我们希望系统作为一个整体自动恢复到进程在A上运行的状态,并且数据库移回到A是主要的,B是从属进行故障转移。我们主要有这个工作,我们已经定义了自己的逻辑来停止B上的数据库,基本上擦除A上的数据库并从B恢复它然后重新建立流。然而,尽管这在99%的时间里对我们有用,但我们仍然会在这里和那里找到同步错误。
在我看来,我们在这里重新发明轮子,但是我们呢?我觉得应该有一个标准的数据库集群方法,数据库节点可以来自哪里为我们设计同步?我是天真的还是这已经存在,什么流行语描述了这种架构?这是一个“多主人”吗?当一个或多个主机在一段时间内发生故障时多主机是否同步?