Java 8 如何在小规模下为N个节点(s)软件构建一个基本冗余体系结构

Java 8 如何在小规模下为N个节点(s)软件构建一个基本冗余体系结构,java-8,tcp,nfs,distributed-system,rhel8,Java 8,Tcp,Nfs,Distributed System,Rhel8,我被指派设计软件,如果无法访问X.X.X.X,则该软件将触发CatastrophicEvent()。 约束条件: 它必须部署在两个单独的服务器中才能实现可用性 在任何时候,任何一个软件实例都只应触发灾难性事件(),因为这是一个灾难性事件 OS:RHEL 8.2语言:JAVA-8 我已经想了很久了。但是,我对我的系统设计有一些疑问。 请查看我的初始设计计划:- 在NFS公共安装区域中具有state.cfg文件,该文件应说明此时哪个软件是主要的 当软件启动时,默认任何一个软件为基本软件,另一个软件

我被指派设计软件,如果无法访问X.X.X.X,则该软件将触发CatastrophicEvent()。
约束条件:

  • 它必须部署在两个单独的服务器中才能实现可用性
  • 在任何时候,任何一个软件实例都只应触发灾难性事件(),因为这是一个灾难性事件
    OS:RHEL 8.2语言:JAVA-8
    我已经想了很久了。但是,我对我的系统设计有一些疑问。
    请查看我的初始设计计划:-
    • 在NFS公共安装区域中具有state.cfg文件,该文件应说明此时哪个软件是主要的
    • 当软件启动时,默认任何一个软件为基本软件,另一个软件为冗余软件
    • 有一个单独的状态文件(NFS公共区域),该文件应由各自的软件每K秒编写一次,说明其最近的运行状况
    • 随时让一个实例检查另一个软件的状态。文件在最后X秒后未写入,声明另一个实例已死亡,并通过修改state.cfg使自己处于初始状态,同时使另一个实例处于冗余状态
    • config和status.file都可用于每个服务器,因为它们都安装在每个服务器上,因此软件都可以根据需要读取或写入rach其他文件
    怀疑

    • 如果由于网络/存储等原因出现NFS问题,则此设计将失败
    • 请注意,我放弃了在两个软件之间通过TCP套接字/消息队列共享心跳的想法,因为它也会受到网络丢失的影响
    我知道设计一个分布式系统是一个巨大的教训,尽管我尝试了一下,但我的想法似乎还不够。 strong文本


    如果社区能为我提供一些线索或任何想法,我将不胜感激。

    我建议您阅读CAP theorum。然后讨论您想要哪种类型的系统,CP AP还是CA。然后相应地修改设计。好的!我得到了它!