我有一个在Windows服务器上运行的Spring Boot应用程序(jar文件),用于在数据库中的某些表和基础结构的其他部分(通过ActiveMQ的消费者应用程序)之间同步数据。
让它在没有任何停机时间(或很少)的情况下全天候运行至关重要。
我目前正在尝试找到执行此操作的最佳方法,因为我们当前的解决方案是运行同一应用程序的多个实例并定义一个处于活动状态并连续ping通(通过数据库中的条目每隔15秒写入一次) ),而其他实例只是运行并且什么都不做(非活动状态,导致锁定)。如果活动实例已停止更新数据库中的锁定条目(冻结或崩溃),则其中一个可用实例将取代它并开始处理数据。
我有一种感觉,它不是那么灵活的解决方案,特别是当我需要准备我的代码的不同部分来检查锁定条目并同步所有这些实例时。它增加了代码的复杂性,我想避免它。
有没有更好的解决方案?插件,实现模式还是工具?
PS: 我读到了SpringBootApplication中可用的健康端点,并认为它可以帮助我(ping \从其他Watchdog软件\工具检查它们,也许?),但不知道如何。
答案 0 :(得分:0)
如果发生崩溃,您在请求失败时仍有15秒的延迟
我会使用netflix(开源)的zuul路由器
它将平衡实例之间的负载,如果第一次调用失败,它将在另一个实例上重试您的请求
我很确定它已经完成但是在发生硬崩溃时使用Windows服务重启实例