Я недавно познакомился с memcached.Это сделало несколько серьезных вопросов для меня.Предположим, у меня есть новостное веб-приложение.Очевидно, что наиболее дорогостоящей задачей является отправка готовых запросов для извлечения любого новостного контента из базы данных.Предполагая, что сама база данных кэширует содержимое новостей, а также планы запросов, каковы преимущества использования отдельных серверов кэширования?
Подробнее о приложении (мнимое):
- Размер базы данных составляет более 300 ГБ (предпочтительно MySQL или любой другой СУБД)
- Объем оперативной памяти составляет 32 ГБ
- База данных может находиться или не находиться на веб-сервере
=== в случае использования серверов кэширования ===
- Три сервера, каждый из которых с 32 ГБ памяти
Я знаю, что серверы кэширования, такие как memcached, фактически создают впечатлениеу вас агрегированный кеш 96ГБ.Но с другой стороны, должно быть по крайней мере несколько дополнительных запросов от земли веб-сервера к земле кеш-сервера.
Мое понимание пути, по которому должен пройти каждый запрос, сделанный клиентами, выглядит примерно так:
При использовании серверов кеша:
веб-сервер=> сервер кеша == существуют ли данные внутри сервера кеша?=>
- YES => веб-сервер => клиент
- NO => сервер БД => веб-сервер => клиент;также запрос на сохранение к серверу кэша
Если серверы кэша не используются:
веб-сервер => сервер БД => веб-сервер => клиент
А также, что если оба веб-сервера и сервер БД находятся на одном компьютере?Так что у нас будет это: веб-сервер => клиент
Итак, мои основные вопросы:
- Стоит ли делать дополнительные запросы с веб-сервера надругие серверы вместо того, чтобы делать один запрос к нашей БД?
- Я что-то здесь упустил?
- Есть ли другие решения?Какой подход используют большие системы, такие как Википедия, в этой конкретной проблеме и кешировании?
- Можем ли мы использовать другой подход, такой как использование какой-либо специальной системы кеширования, связанной с СУБД, где каждый сервер хранит базу данных, но кэширует только часть ее в памяти,Таким образом, мы можем не только использовать другие серверы для обеспечения высокой доступности и репликации, но и уменьшить количество запросов.