代码之家  ›  专栏  ›  技术社区  ›  Gabe Moothart

高可靠性服务的设计考虑

  •  1
  • Gabe Moothart  · 技术社区  · 15 年前

    我正在编写一个C Windows服务,它将执行一些后台处理——基本上它是工作队列的使用者。

    它不需要下降(停止处理新项目),如果它下降了,我需要得到通知。

    对于a)确保这样的服务尽可能可靠,b)如果出了问题,发出通知,有什么设计指南和考虑?例如,我考虑过创建一个观察线程,它的唯一任务是确保工作线程仍在处理作业。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Mitchel Sellers    15 年前

    在这里,您可以做很多事情来帮助提高可靠性,并衡量您是否有一个能够满足您需求的解决方案。

    测试

    首先,最重要的是,您所经历的测试过程需要非常可靠,测试那些“意外”情况、网络连接丢失等。确保您正在测试这些情况,并看到正在发生的事情。通知失败,可以有点“混包”。例如,如果没有可用的网络连接,就不能给自己发电子邮件。

    正确的代码设计

    除了设置有效的测试方案外,请确保您的代码尽可能防弹,因为您正在创建一个Windows服务,请确保您正在捕获、记录和处理所有可能的错误,就像一个错误在操作系统中冒泡一样,您的服务也会失效。

    监测

    考虑进行监视,在我的日常工作中,我们使用了两种类型的监视,在某些情况下会在Windows事件日志中报告错误,并且Microsoft MOM用于通知我们环境中发生的任何/所有问题。我们使用的第二个进程是第二个计划作业,每x分钟验证一次关键作业是否处于“已启动”状态,如果它不处于“已启动”状态,它将重新启动它。不雅致,但很管用。

        2
  •  0
  •   Sunny    15 年前

    我认为您的系统管理员可能正在使用MOM和/或太阳能风或其他监控应用程序来监控部署服务的机器并采取适当的措施(发送电子邮件、拨打电话:)