假设我们在N个应用服务器上同时运行N个相同的Windows服务(在C#/ .NET中开发)。 “不幸的是”,每个服务都有自己的内存状态(比如,“下午10点我需要执行一项工作”)。
通过前端Web UI用户可以更改其中一项服务的状态(例如,将作业开始时间从10更改为12)。
我的问题:在用户更改状态后同步这些服务之间的状态的最佳做法是什么? (最好在.NET平台上)。
P.S。你可能想知道为什么我们在不同的服务器上运行相同的服务。那是因为管理者认为冗余会阻止单点故障。但是当服务实例拥有自己的内存状态时,它也会引发上述问题,用户可以通过UI更改这些状态。
欢迎任何建议!
答案 0 :(得分:0)
听起来您正在使用本地服务状态作为主要配置/设置/等。对于每个服务实例。由于您希望它们保持同步,这意味着更新每个操作实例。
我可以想到一些如何解决这个问题的方法,但根据您提供的信息,我会选择使用更新轮询进行集中配置:
这是一个简单的分布式结构,它使每个服务负责获取其设置以便操作(拉模型),并且比通知每个服务实例(推送模型)更容易管理。它的另一个好处是允许您以后添加更多服务器和服务实例,而无需更改应用程序代码或修改任何配置信息。