Запуск двух приложений поверх одной базы данных - PullRequest
1 голос
/ 22 апреля 2011

У меня большой сайт, и у него разные потребности для разных пользователей.До сих пор одного приложения было достаточно для удовлетворения всех потребностей пользователей.

Теперь, когда мы растем, я хочу отделить базу кода, чтобы у меня было приложение для каждого основного случая использования.В этом контексте, когда я говорю «приложение», я имею в виду веб-приложения.

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

С другой стороны, у меня есть очень надежные модели данных (использующие ORM), которые я мог бы легко скопировать в каждое приложение.Пока я следил за тем, чтобы этот уровень модели данных оставался одинаковым для каждого приложения, я думаю, что должен иметь возможность ожидать согласованности данных для каждого приложения.

Что еще меня должно беспокоить?Чем больше я думаю об этом подходе, тем лучше он мне кажется - Apache уже обычно создает экземпляр текущего приложения для каждого клиента, поэтому несколько приложений уже получают доступ к базе данных одновременно.Эта архитектура должна быть такой же, просто код, который вызывает запросы к базе данных, будет другим.

Есть ли здесь какие-то другие недостатки, которые мне не хватает?стандартная ЛАМПА.

1 Ответ

2 голосов
/ 22 апреля 2011

Я думаю, что вы на правильном пути.

Рассмотрим любой полезный и сложный веб-сайт, например Переполнение стека .Имеет один интерфейс (приложение) при поиске ответов на вопрос.При чтении ответов на вопрос есть еще один, и еще один для ответа на вопрос.У него есть еще одна парадигма применения модерации.И у него есть изощренная возможность переносить вопросы на другие сайты.

И все же они счастливо сосуществуют.Модель данных является ключевой, как и код, который сохраняет и защищает целостность нормализованных данных.

Что касается масштабируемости, то в Википедии есть аналогичная модель.Масштабирование решается с помощью четырех (может быть, пяти) серверов баз данных, один из которых является главным, а другие - подчиненными.Любой d / b-сервер может ответить на запрос на чтение, но только мастер принимает записи.Конечно, существуют также сотни веб-серверов, которые запускают «приложения», а также сотни серверов веб-кэша для балансировки производительности.Но архитектура базы данных отражает тот факт, что 99 +% всех обращений к страницам читаются.

...