我正在尝试为我们的运营部门创建一个监控应用程序,以便在处理遇到问题的系统时采取主动。我创建了一个应用程序,但它有一些缺点:
要修复第一个问题,我将创建一个临时服务(app)(监视器)将进行ping操作的数据库,然后应用程序将查询数据库以获取更新。考虑到这一点后,我意识到了第二个问题,并认为这是一个未来的问题。
所以我的想法是,而不是让临时应用程序ping系统,只需让每个系统都有一个接口,每隔x次就将它的状态发布到数据库。但后来我遇到了我们拥有的WCF和IIS服务的问题。这些服务可能会持续数天而无需任何人实际使用该服务。我如何让这些服务继续发布其数据?
我的问题是:
在这种情况下获取数据或推送数据会更好吗?
如果请求,跨多个平台(IIS,WCF,桌面)维护单个API的建议做法是什么?
如果推送,您将如何处理基于实例而不是持续运行的Web服务的情况?
答案 0 :(得分:0)
对于Web服务,一种解决方案可能是实现健康检查终点,您可以简单地调用它:webservice / isServiceUp?
我更喜欢这个信息是PULLED。如果服务/ Web服务/应用程序出现故障,那么您就不可能依赖它来向DB写一些内容......它可能会高度风险且不可靠。
在现实世界的情况下,它比这更复杂一点,因为服务主机和消费者之间可能会发生某些事情(例如DNS问题),在这种情况下,你会想要考虑没有得到任何东西的情况从isServiceUp返回(没有true没有false,只有400 lvl错误)...
考虑使用负载均衡器检查APPS / Web服务,并在出现问题时主动切换到不同的IP ......这是可能的。