У меня установлен сервер в фиксированном контейнере с ограниченной пропускной способностью и ЦП.
На этом сервере у меня есть веб-сайт, который делает много запросов к своей базе данных.
База данных MySQL веб-приложения - это только одна таблица.
Клиентское приложение делает один запрос каждые 5 секунд через AJAX, и AJAX открывает базу данных MySQL. Это неприемлемо в фиксированном контейнере после того, как несколько сотен пользователей находятся на сайте более 10 минут одновременно.
Чтобы минимизировать нагрузку на фиксированный контейнер, я хочу перенаправить эти запросы из
1. клиент запрашивает базу данных MySQL приложения, которая находится на сервере с ограниченными ресурсами
к
2. клиент запрашивает другой сервер без фиксированного ограничения запросов в минуту.
Преимущество состоит в том, что мне не нужно перемещать все веб-приложение в неограниченный контейнер, вместо этого это может быть значительно дешевле, делать гораздо больше запросов AJAX на другом эластичном или более мощном сервере.
Есть ли более простой внутренний метод?
Вы в значительной степени перечислили свои варианты. Если ваши данные довольно статичны и могут быть эффективно повторно использованы для нескольких запросов несколькими клиентами, вы можете взглянуть на некоторую форму кеширование.
Вот некоторые варианты:
кэш памяти демон, установленный в контейнере вашего сайта. Приложение сначала проконсультируется с кэшем памяти, чтобы узнать, есть ли там требуемые данные, и только если нет, запросит MySQL. И затем сохраните его в кеше с некоторым сроком действия.
AWS ElastiCache - также memcache, но управляемый AWS.
Кэшированный запрос MySQL - вы по-прежнему делаете запросы к базе данных, но база данных кэширует предыдущие результаты и возвращает их намного быстрее.
Пробовать оптимизировать схему вашей базы данных и добавьте правильные индексы. Это ускорит обработку и снизит нагрузку на БД.
Если ваш веб-сайт слишком популярен, и используемые размеры экземпляров не успевают, возможно, вам нужно выбрать более крупные. смотреть на CloudWatch мониторинг и проверка загрузки системы.
Надеюсь, это поможет :)