Совместное использование глобальных переменных между несколькими серверами/приложениями

StackOverflow https://stackoverflow.com/questions/956905

Вопрос

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

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

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

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

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

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

РЕДАКТИРОВАТЬ:Это не мультиарендность.Некоторые приложения, которые будут использовать эту службу, уже настроены в мультитенантном режиме.Другие - одноразовые приложения...другие — это настольные приложения, используемые в локальной сети или VPN.

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

Это было полезно?

Решение

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

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

Другие советы

Я думаю, что лучший термин для описания вашего вопроса, который мог бы дать Нил, — «Многопользовательская аренда».Devlicious опубликовал здесь интересную статью о мультитенантности: http://devlicio.us/blogs/anne_epstein/archive/2009/04/24/the-case-for-multiple-dbs-in-multi-tenancy-situations.aspx.

Если бы я кодировал службу общей конфигурации, я бы попытался реализовать ее, используя шаблон, аналогичный шаблону локатора службы. http://martinfowler.com/articles/injection.html#UsingAServiceLocator и разработать веб-сервис, который легко расширяется и с которым легко взаимодействовать.Служба будет абстрагировать ваш проект независимо от того, является ли это одной базой данных, двумя базами данных или несколькими файлами конфигурации XML.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top