2012-06-21 184 views
1
  1. 假设我们在N个应用程序服务器上同时运行N个相同的Windows服务(使用C#/ .NET开发)。 '不幸',每项服务都有自己的内存状态(比如说,“在下午10点我需要执行一项工作”)。在应用程序服务器之间同步服务状态

  2. 通过前端Web UI用户可以将其中一个服务的状态(例如,将作业的开始时间从10更改为12)更改。

我的问题:什么是在用户更改状态后同步这些服务之间的状态的最佳实践? (最好在.NET平台上)。

p.s.您可能想知道为什么我们在不同的服务器上运行相同的服务。这是因为管理者认为冗余可以防止单点故障。但是当服务实例拥有自己的内存状态时,它也会带来上述问题,用户可以通过用户界面来更改它们。

这里的任何建议表示赞赏!

回答

0

听起来像你正在使用本地服务状态作为主要配置/设置/等。为每个服务实例。既然你希望它们保持同步,那就意味着更新每个操作实例。

我能想到许多如何解决这个办法,但根据您所提供我会去与集中配置与更新轮询的信息:

  • 以用于配置中央DB /设置,如工作时间。
  • 初始化时,所有服务都从中央数据库读取设置/配置并将它们以状态方式应用于服务实例。
  • 管理用户界面只是将数据保存到配置/设置数据库。
  • 所有服务定期从DB查询更新并相应地应用。

这是一个简单的分布式结构,使每个服务负责获取其设置以便操作(拉模型),并且比向每个服务实例(推模型)发出通知更容易管理。它有一个额外的好处,即允许您稍后添加更多的服务器和服务实例,而无需更改应用程序代码或修改任何配置信息。

+0

谢谢! (经过这么多年:)) –

相关问题