Совместное использование глобальных переменных на нескольких серверах / в приложениях - PullRequest
3 голосов
/ 05 июня 2009

Я хочу установить центральную точку контроля для настроек, существующих на нескольких веб-серверах, серверных приложениях и, возможно, даже внутренних инструментах рабочего стола.

В настоящее время у меня есть файл настроек на каждом веб-сервере или в каждом приложении с определенными глобальными переменными: адрес электронной почты администратора, где хранить загруженные файлы и т. Д. Некоторые параметры (например, адрес электронной почты глобального администратора для отправки отчетов об ошибках) к) в значительной степени компании. Другие настройки могут зависеть от клиента или сайта.

Я также хочу, чтобы эта центральная БД могла следить за тем, кто / что получает доступ к каждому параметру. Например, скажем, у меня есть параметр «ProcessedImageUploadFolder» со значением «\\ ImageServer \ cache \», который используется 5 различными веб-сайтами, но я хочу изменить этот параметр, но, глядя на мою центральную систему, я вижу, что есть 6-й сервер, о котором я не думал, который также запрашивал этот параметр (вызывающее приложение должно идентифицировать себя, чтобы получить параметр, чтобы БД могла его зарегистрировать), на всякий случай изменение этого параметра для 6-го сервера будет иметь побочные эффекты.

Прежде чем развернуть мою собственную БД с сервисом для разбивки и регистрации настроек, мне интересно, есть ли какие-нибудь библиотеки / приложения, которые уже обрабатывают что-то подобное. У кого-нибудь есть идеи, если что-то подобное было сделано? Как называется этот тип системы?

Вероятно, решение было бы на C # / SQL, но если бы единственным вариантом было что-то вроде php или Java, я бы, вероятно, использовал это как базу и перенес бы его.

Или я все делаю неправильно?

EDIT: Это не мультитенантность. Некоторые из приложений, которые будут использовать этот сервис, уже настроены на работу с несколькими арендаторами. Другие - одноразовые приложения ... другие - настольные приложения, используемые в локальной сети или в сети VPN.

Если кто-то может пометить этот вопрос лучше, будь моим гостем.

Ответы [ 2 ]

1 голос
/ 07 июня 2009

Центральная база данных со службой кажется подходящим вариантом. Убедитесь, что ваши приложения кэшируют конфигурацию, чтобы они не обращались к базе данных при каждом запросе, а также чтобы они могли продолжать работу, если центральная база данных временно недоступна.

Если Java является опцией, вы можете взглянуть на Commons Configuration . Вы также можете взглянуть на параметры профиля в Приложения Oracle (стр. 2-21) для некоторых идей. Параметры профиля имеют интересную иерархию конфигурации, в которой предпочтения могут быть заданы на уровне сайта, приложения, ответственности и уровня пользователя, причем предпочтения имеют наивысший уровень приоритета.

0 голосов
/ 06 июня 2009

Я думаю, что наилучший термин для описания вашего вопроса, который бы предложил Нейл, называется «Multi Tenancy». Devlicious опубликовал интересную статью о Multi Tenancy здесь: 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, и разработать веб-сервис, который легко расширяется и с которым легко взаимодействовать. Служба будет абстрагировать ваш дизайн независимо от того, будет ли это 1 база данных, 2 базы данных или несколько файлов конфигурации xml.

У кого-нибудь еще есть предложения?

...