在我们的项目中,我们有一个有状态的服务器。服务器运行规则引擎(Drools)并使用休息服务公开功能。它是监控系统,正常运行时间或100%以上是非常关键的。因此,我们还需要策略来关闭服务器以进行维护,并且有策略能够在一台服务器脱机时继续监视代理。
第一种方法是将消息队列或服务总线放在drools服务器前面,以保留尚未处理的消息,并具有将服务器状态备份到数据库或其他存储的机制。这使得可以关闭服务器几分钟以部署新版本。但问题是,当一台服务器意外脱机时该怎么办。有状态服务器是否有任何故障转移策略,您的体验是什么?欢迎提出建议。
答案 0 :(得分:0)
我无法想到'正确'的方式。它取决于以下内容:
启用故障转移的一些想法:
重播事件时需要考虑的另一点是,在完成重播之前,您可能不希望将任何警报提升到外部世界。例如,您可能不希望发送50封警报电子邮件,表示ApplicationX已关闭,向上,向下,向上,向下,向上,......
我假设监控应用程序可能会以某种形式向外界发送警报。如果您具有4中的热门配置,则还需要控制警报。我很想通过配置每个将警报推送到自己的队列来解决这个问题。然后,中间件可以将警报从辅助监视器转发到死信队列。故障转移将是重新配置中间件,以便主要警报进入死信队列,次要警报进入警报通道。此机制还可用于丢弃重放恢复期间引发的事件。
考虑到重放事件可能带来的复杂性和潜在的混乱,对于监控应用程序,我可能更喜欢从干净的平板开始,或者使用持久化会话。但是,这很可能取决于您正在监控的内容。