Как делает digg, или какой-либо другой веб-сайт интенсивного трафика хранят сеансы пользователя? Что они используют для хранения сеансов пользователя? Файловая система, DB (который?), кэш-память или оба?
Давайте вообразим простую ситуацию. Зарегистрированный пользователь установил флаг "Remember me" во время входа в систему. Мы установили сеансовые куки с датой истечения срока 1 год. Например, мы сохраняем сессию в кэш-памяти, но мы также должны вести учет этой сессии в DB (в моей версии). Только пользователи с флагом "Remember me" хранятся в DB. Действительно ли это - правильный способ сохранить сессии? Я имею в виду веб-сайты интенсивного трафика, конечно (с 2 или больше серверами приложений, 2 или больше базами данных, memecache серверы и т.д.). На небольшой сессии хранения веб-сайтов путем по умолчанию (в файловой системе) в порядке.
Я попытался искать Google, но не удался найти любую информацию об этом. Я считал некоторые решения из "Усовершенствованного PHP, программирующего" книгу, но основной диакритический знак был сделан к настройке обработчика хранения сессии.
Действительно надежда услышать хорошие идеи или ссылки!
Спасибо.
Они наиболее наверняка используют MEMCACHED
или эквиваленты.
В дополнение к ответу Аликса вы можете быть заинтересованы в оформлении заказа этой статьи:
Недолгого выдержки:
Что вызвало MOMCACHED как магазин сессий:
вскоре после раздвижного вывода Digg V3 Нередажный магазин сеанса MySQL Аппаратное обеспечение разбилось. Это привело к Digg отключение Мы всегда планировали, что в такой случай, когда мы просто катили (тривиально) изменить, чтобы поставить сеансы в Memcached, а не MySQL, чтобы увидеть, как это готовы.
Итак, прежде чем вы ударили БД каждый раз для сеансов?
Да.
MySQL был доставлен отставать от вставок и Выбирает, чтобы иметь дело с сеансами. Наша проблема была на самом деле с Очистка старых сессий. Сценарий удалить старые сессии, несмотря на то, что довольно сложный в своих попытках Чтобы не перегрузить сеансы база данных, все еще повлияла на нее.
Мы поручием, что Memcached удалит Истекшие сессии с меньшим накладным расходом чем mysql.
Мы использовали InnoDB для сессий [до Memcached]. Это было не так Блокировка уровня таблицы или строки. Это было Уровень ОС. Используя memcached. Перед MySQL будет уменьшен нагрузка и позволило сценарию администратора сделать свою работу, но это подчеркивает Вопрос: почему даже есть MySQL за мемкатами вообще? Нет нужна или даже хочу не волатильный сеансы. (Важная заметка для читателя: вам может понадобиться или хотеть не волатильный сеансы).
«Почему даже у MySQL позади Memcached вообще?