Подходы для memcached сессий

Я думал об использовании memcached хранить сессии вместо MySQL, который походил на хорошую идею, сначала.

Когда дело доходит до части обработки отказа использования memcached серверы, Это немного вызывает беспокойство, что мои сессии прекратят работать, если memcached пошел бы офлайн. Это будет, конечно, влиять на моих пользователей.

Существует несколько методов, которые мы уже используем для сокращения обработки отказа, включая имение в наличии пула серверов для компенсации в случае времени простоя, используя sharding/consistent хеширующий через пул сервера и так далее. Мы также сделали бы своего рода постепенное ухудшение, которое говорит пользователям, что что-то пошло не так, как надо, и они могут войти в систему снова, в случае их выгоняемый из-за memcached обработки отказа сервера.

Таким образом, как люди обычно занимаются этими проблемами при хранении сессий на memcached серверах?

7
задан Industrial 23 May 2010 в 00:41
поделиться

2 ответа

Вы можете создать отказоустойчивый метод, используя как db, так и memcached. Проверьте, находится ли ваш объект memcached в памяти, иначе сохраните сеанс в базе данных, затем создайте экземпляр memcache. Просто убедитесь, что при выходе / выходе он сбрасывает / удаляет memcached ...

Так что сначала проверьте memcached, если не удалось, проверьте db ... :)

3
ответ дан 6 December 2019 в 21:10
поделиться

Во-первых, если вы помещаете что-то только в кэш памяти, вы должны нормально потерять это. Для всего остального есть постоянное хранилище.

Во-вторых, memcached просто не очень часто дает сбой. Нет никаких движущихся частей, таких как дисковые пластины. Единственный раз, когда я терял сеансы, это было из-за перезагрузки для обновлений ядра. Но проиграть эти сессии не было большой проблемой из-за первого очка.

Итак, чтобы ответить прямо на ваш вопрос, если данные можно потерять, их можно сохранить только в сеансе кэша памяти. Если проигрывать неприемлемо, сохраните его в постоянном хранилище и, возможно, кешируйте в кэше памяти для ускорения.

9
ответ дан 6 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: