Upload
ontico
View
6.970
Download
0
Embed Size (px)
Citation preview
Омнониевые торсиометрыКаждый разработчик web приложений рано или поздно сталкивается с довольно типичной проблемой: перед ним стоит задача построить фабрику по производству омнониевых торсиометров.
Это не бесплатно• Вырастает сложность предприятия
• Нужно организовать логистику
• Вести складской учет
Терминология• Источник чистого омнония - origin
• Cклад ограничен по объему - cache size
• Поиск образца нужной формы и породы - cache hit / cache miss
Терминология• Омнониум быстро портится - freshness
• испорченным омнониумом торсиометры калибровать нельзя - stale data
Терминология• нужно проверить пригодность - validation
• выбросить просроченный омнониум со склада -invalidation
Терминология• Иногда случается обидная ситуация: cклад переполняется, и приходится выбрасывать ещё годный омнониум - eviction
“Хорошие” данные• Не кэшировать часто изменяющиеся данные
• Кэшировать 20% данных, которые используются 80% времени
• размер данных имеет значение
Кандидаты на кэширование • Статика, картинки и медиа
• Java script / CSS / HTML • Объекты бизнес-логики • Временные данные: сессии, статистика
ExpiresВремя в формате HTTP-date, до которого контент валиден
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Нужно использовать, как fallback
Cache-ControlНовый механизм управления кэшем
Cache-Control: max-age=3600, must-revalidate, public
Cache-Control: no-cache
• Бэкенд хранит копии объектов из базы прямо в коде
• Используется библиотека, или компонент для кэширования
Где хранить?
• Используется отдельный кэширующий сервер, или хранилище: memcached, redis, hazelcast, etc.
• http://db-engines.com
Где хранить?
noSQL - это хорошо• Низкий latency • Легко хранить плохо структурированные, разнородные данные
• Упрощается код хранилища (уменьшается риск порчи данных)
Memcached• key value, поддерживает
freshness • Фиксированный объем памяти (-m)
• 16-тибитные флаги • Работает в режиме LRU, или консистентного кэша
MemcachedЛучшая документация - это описание протокола
https://github.com/memcached/memcached/blob/master/doc/protocol.txt
Статистика memcached• Команда stats • hits / misses • evictions • conn_yields прерывание батча и ключ (-R)
Кластер memcached• Клиент выбирает инстанс
(например libketama) • Используется брокер
(например mcrouter)
Кластер memcached• Выбор ноды для чтения, или записи (hash % num_nodes не работает)
• Consistent hashing ring
СпасибоКраснощек Юрий
www.cachelot.io [email protected] @cachelot_io
Для презентации использованы иконки http://www.flaticon.com/