我们正在设计一个客户端/服务器程序,我需要一些设计决策方面的帮助。

该程序的服务器端将作为服务在许多 Windows 服务器上运行,该服务正在监视这些服务器,在需要时该服务将通过电子邮件向我们发送报告。

客户端将用于控制和管理服务器上运行的服务,但不会始终运行。

我的问题是我应该在哪里以及如何存储服务的配置。设置(smtp 等)将在客户端上定义,但远程服务器(可能有很多)上运行的服务需要使用设置进行更新,并保留这些设置直到再次更新。

我可以想到两个选项,一个是中央 Windows 共享,服务从中读取设置,或者当客户端点击“保存”时,将设置保存到每个服务器上的某个位置。

你会怎么办?有什么我应该注意的吗?

谢谢

有帮助吗?

解决方案

我没有这样的服务经验,但一个建议可能是存储设置中,他们都可以访问到中央数据库。 所以每次你创建你在数据库中创建一个新的设置进入一个新的服务器。

只需投掷到这一点的讨论。

其他提示

我开发了一个涉及一个客户端和多个服务器的系统。我的系统的要求包括它非常可靠和高度可用(这可能不是您的要求)。从这个角度来看,有以下一些想法:

  • 如果将设置存储在中央位置(文件共享或数据库),则会在分布式系统中创建单点故障。解决方法是将设置存储在 2 个或更多中心位置。但是,如何确保 2 个或更多位置同步?)

  • 如果您将设置存储到每台服务器,那么当您尝试保存设置时,如果客户端/服务器与一台服务器的通信失败怎么办,或者如果其中一台服务器未启动怎么办。现在您遇到的情况是服务器不同意这些设置。那么,如何确保多个服务器同步呢?

  • 所以....考虑如何可靠地保持服务器同步,以及它们如何检测何时不同步。在我的系统中,服务器之间有一个主/从方案,带有序列号的心跳,以便从服务器可以不断地确保它们是同步的并且没有错过任何消息。如果主服务器宕机,系统性能会下降,但仍然可以正常工作,因此主服务器不会出现单点灾难性故障。

有事情号考虑这里。

显而易见的选择是一个存储库是否是注册表,文件,在服务器端数据库。当你的服务加载你获取集合中的所有这些设置。然而,当你在服务器端为让添加更多的服务说监控一些其他的任务发生什么。

现在你在的问题,因为如果参数得到了在DATABSE通过一个服务器上的其他服务更新/ s的需要被更新通知的,他们需要重新开始。

可以在由许多服务之间引入许多IPC machenism即队列,共享内存,管道,套接字来此。我建议共享内存,如果服务没有中央服务器或数据库的分布式或队列,如果它不是;作为一个更好的选择。但是服务还是需要一些合作,如何给一个提示等服务有关的参数更新用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top