【问题标题】:Design Pattern for Module that continuously checks if other modules in the system are working?持续检查系统中其他模块是否正常工作的模块设计模式?
【发布时间】:2016-11-21 03:51:06
【问题描述】:

我正在实现一个 java 项目,其中有多个解耦模块与共享服务(数据库/Web 服务)交互。

有一个健康检查模块,它不断地轮询所有模块以查看它们是否正常工作。如果发现某个模块处于非活动状态或无法正常运行,则运行状况检查器模块会执行修复并重新启动它。

这属于哪种行为模式?

【问题讨论】:

    标签: java design-patterns architecture publish-subscribe polling


    【解决方案1】:

    Health Checker 基本上应该跟踪所有其他模块 的工作方式。

    因此,健康检查器可以观察变化,因此您可以使用 观察者设计模式。模块应包含一个方法,该方法应在每次发生更改时通知 Health Checker

    要控制共享资源,您可以使用资源管理设计模式单例设计模式

    您还可以阅读此 MSDN 博客,其中讨论了您正在谈论的类似应用程序。

    另一个类似的设计模式可以是this

    【讨论】:

    • 不确定 Observer 是否在这里。我认为观察者模式是一个模块通知观察者的地方,而这里的健康检查器正在轮询其他模块,而不是等待他们通知。
    • @ajb。是的。我的错。改变了我的答案。
    【解决方案2】:

    在这种情况下,我不推荐观察者。如果您没有通知,则无法区分损坏的模块和不创建事件的工作模块。

    Healthchecker 应该使用调度程序并不时轮询每个模块。 写起来更容易,效果也更好。

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 2013-08-06
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多