跨多个服务器/应用程序共享全局变量

时间:2009-06-05 16:39:41

标签: design-patterns architecture global-variables application-settings

我希望为多个Web服务器,服务器应用程序甚至内部桌面工具中存在的设置设置一个集中控制点。

目前的情况是我在每个网络服务器或每个应用程序中都有一个设置文件,其中定义了全局变量:管理员电子邮件,存储上传文件的位置等。某些设置(例如发送错误报告的全局管理员电子邮件) to)几乎是公司范围内的。其他设置可能是客户端或站点特定的。

我还希望这个中央数据库能够密切关注访问每个设置的人/访问者。例如,假设我有一个“ProcessedImageUploadFolder”设置,其值为“\\ ImageServer \ cache \”,由5个不同的网站使用,但我想更改此设置,但是看着我的中央系统,我看到了我没有想到的第6个服务器也一直在请求这个设置(调用应用程序需要识别自己以获取设置,因此数据库可以记录它),以防万一改变第6个服务器的此设置将具有副作用。

在使用服务滚动我自己的数据库以进行调出并记录设置之前,我想知道是否有任何库/应用程序已经处理了这样的事情。如果这样的事情已经完成,有没有人有任何想法?什么是这种类型的系统?

优选地,解决方案将在C#/ SQL中,但如果唯一的选择是像php或Java,我可能会将其用作基础并移植它。

或者我这样做错了吗?

修改 这不是多租户。一些使用此服务的应用程序已经在多租户设置中。其他是一次性应用程序......其他是本地网络或VPN上使用的桌面应用程序。

如果有人能更好地标记这个问题,请成为我的客人。

2 个答案:

答案 0 :(得分:1)

带有服务的中央数据库似乎是要走的路。确保您的应用程序缓存配置,以便它们不会在每个请求中访问数据库,并且如果中央数据库暂时不可用,它们将能够继续运行。

如果选择Java,您可以查看Commons Configuration。您还可以查看Oracle Applications(第2-21页)中的个人资料选项,了解一些想法。配置文件选项具有一个有趣的配置层次结构,其中可以在站点,应用程序,职责和用户级别设置首选项,最高级别首选项优先。

答案 1 :(得分:0)

我认为描述你的问题Neil的最佳术语叫做“多租户”。 Devlicious在这里发表了一篇关于多租户的有趣文章:http://devlicio.us/blogs/anne_epstein/archive/2009/04/24/the-case-for-multiple-dbs-in-multi-tenancy-situations.aspx

如果我正在编写sshared配置服务,我会尝试使用类似于服务定位器模式http://martinfowler.com/articles/injection.html#UsingAServiceLocator的模式来实现,并开发一个易于扩展且易于互操作的Web服务。无论是1个数据库,2个数据库还是多个xml配置文件,该服务都会抽象您的设计。

有没有人有任何建议?