«Меня попросили найти решение на уровне проектирования приложений вместо базы данных» - в этом случае факт, что есть 4 сервера БД, не имеет значения.
Поскольку эти решения должны быть решены на уровне приложений, эти серверы приложений должны взаимодействовать через некоторые носители. Как уже говорили другие, БД будет разумным выбором, но ваши требования исключают это.
Таким образом, серверы приложений должны иметь возможность общаться между собой и осуществить некоторый протокол разрешения консенсуса (например Paxos достаточно хорошо известно), чтобы убедиться, что все они сходятся на том, что «правда»
Это, как правило, осуществляется на уровне инфраструктуры, а не в самом приложении. Я бы предложил использовать некоторый распределенный кеш (например, memcached или redis cluster, но последний еще не готов), но он зависит от других требований (долговечность и т. Д.). Кроме того, IMO это также подпадает под определение базы данных в этом контексте, то есть это уровень инфраструктуры, а не уровень приложения.
Требование «найти решение на уровне проектирования приложений» кажется довольно синтетическим и не обусловлено функциональными требованиями или связано с несоответствующими нефункциональными требованиями, но я могу ошибаться. Я мог представить, что это обусловлено требованиями к производительности, но это легко ухудшит производительность.
Это называется зеркалированием или репликацией и обычно должно быть просто решено на уровне базы данных. Что вы пробовали для себя? – CodeCaster
есть несколько запросов. 1. Эти серверы приложений за балансировщиком нагрузки? в идеале это должно быть так. 2. четыре сервера БД - это mirros? – Jack
@CodeCaster: Благодарим за ответ. Но меня попросили найти решение на уровне разработки приложений вместо базы данных. Есть ли у вас какие-либо идеи, может ли быть реализован какой-либо существующий шаблон GoF для этой проблемы? – SAM