我正在设计一个监控网站和应用程序的基础设施。其思想是构建一个应用程序,它以一定的间隔(30秒、1分钟、5分钟等)检查用户网站/应用程序。重要的是网站检查接近于给定的时间间隔。该基础设施的目标是拥有一个可扩展的基础设施,具有较高的正常运行时间,而不存在单一的故障点(如果可能的话)。一个99%在线时间的监视器是不可接受的。
因此,经过一些集思广益,我想出了以下的基础设施。
此图表包含基础结构的所有不同部分/应用程序。每个应用程序都在自己的机器上运行。
此时,经理委托者的申请风险很高。如果该应用程序已关闭,则如果其中一个员工委派者已关闭,则不能将网站移动到另一个委派方。
因此,我的问题是,这个基础设施是否足够可靠和可扩展,足以监控数千个网站。假设有足够的工人来做所有的监控。欢迎推荐!
发布于 2017-07-23 20:52:35
考虑使用Actor模型的设计。
使用Actor模型,您可以有几个容错代理,每个代理都能够监视一个或多个网站。Actor可以在世界上任何地方的任何机器上执行;您所需要的只是一些硬件来运行它们。软件架构是由参与者自己决定的。因此,与其拥有专门用于特定任务的机器,不如将软件代理专用于可在任何通用机器上运行的特定任务。
这允许您从一台机器开始,根据需要进行扩展,只需添加更多的机器,甚至在“云中”中运行整个程序。一个演员甚至可以管理运行的参与者总数。
进一步阅读
Akka (Java中的Actor模型实现)
用于.NET框架的Akka
发布于 2017-07-23 20:53:16
有几件事你可能需要考虑:
我希望服务器至少在99.9%的情况下可用。只要尽量减少工人的规模,就有可能大幅度提高可用性。
如果您正在执行停机通知,则消息传递的即时性可能很重要。通常,每次中断只需要一个通知。考虑委托给一个奇数的工人,并使用法定人数来确定一个网站是否已经倒闭。
现有的系统已经在做这样的事情了。在开放源码方面,查看Icinga/Nagios。
https://softwareengineering.stackexchange.com/questions/354319
复制相似问题