1
  1. 假设我们有 N 个相同的 Windows 服务(用 C#/.NET 开发)同时运行在 N 个应用服务器上。“不幸的是”,每个服务都有自己的内存状态(例如,“晚上 10:00 我需要执行一项工作”)。

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

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

ps 你可能想知道为什么我们要在不同的服务器上运行相同的服务。这是因为管理人员认为冗余可以防止单点故障。但是,当服务实例拥有自己的内存状态(用户可以通过 UI 更改)时,也会引发上述问题。

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

4

1 回答 1

0

听起来您正在使用本地服务状态作为主要配置/设置/等。对于每个服务实例。由于您希望它们保持同步,这意味着更新每个操作实例。

我可以想到许多解决此问题的方法,但是根据您提供的信息,我将使用带有更新轮询的集中配置:

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

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

于 2012-10-19T21:17:27.433 回答