Кэширование данных
в web приложениях.
Использование
memcached
Краснощёк Юрий
Омнониевые
торсиометры
Каждый разработчик web приложений рано или
поздно сталкивается с довольно типичной
проблемой:
перед...
Что делать?
Нужно применить типовую
схему фабрики по
производству торсиометров
Калибровка
для калибровки прибора
необходим чистый
омноний, за которым
приходится летать
Склад омнониума
Самое очевидное решение
проблемы - построить склад
рядом с фабрикой
Это не бесплатно
• Вырастает сложность
предприятия
• Нужно организовать
логистику
• Вести складской учет
Терминология
• Источник чистого
омнония - origin
• Cклад ограничен по
объему - cache size
• Поиск образца нужной
формы и п...
Терминология
• Омнониум быстро
портится - freshness
• испорченным
омнониумом
торсиометры калибровать
нельзя - stale data
Терминология
• нужно проверить
пригодность - validation
• выбросить просроченный
омнониум со склада -
invalidation
Терминология
• Иногда случается обидная
ситуация: cклад
переполняется, и
приходится выбрасывать
ещё годный омнониум -
evic...
Браузер HTTP сервер
БэкендПрокси
Где кэшировать?
“Хорошие” данные
• Не кэшировать часто
изменяющиеся данные
• Кэшировать 20% данных,
которые используются
80% времени
• раз...
Кандидаты на
кэширование
• Статика, картинки и
медиа
• Java script / CSS / HTML
• Объекты бизнес-логики
• Временные данные...
HTTP Headers
• Expires:
• Cache-Control:
• Last-Modified:
• Etag:
• Content-Length:
• Vary:
Expires
Время в формате HTTP-date,
до которого контент валиден
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Нужно использовать, ...
Cache-Control
Новый механизм
управления кэшем
Cache-Control: max-age=3600,
must-revalidate, public
Cache-Control: no-cache
Cache-Control
• no-store указывает на то, что
данные нельзя кэшировать ни
при каких обстоятельствах
HTTP Headers
• Expires:
• Cache-Control:
• Last-Modified:
• Etag:
• Content-Length:
• Vary:
Кэш на стороне
бэкенда
• Бэкенд хранит копии
объектов из базы прямо в
коде
• Используется библиотека,
или компонент для
кэширования
Где хранить?
• Используется отдельный
кэширующий сервер, или
хранилище: memcached,
redis, hazelcast, etc.
• http://db-engines.com
Где х...
Когда нужен
кэширующий сервер
• доступ к данным из
разных мест
• availability
• масштабирование
noSQL - это хорошо
• Низкий latency
• Легко хранить плохо
структурированные,
разнородные данные
• Упрощается код
хранилища...
Memcached
• key value, поддерживает
freshness
• Фиксированный объем
памяти (-m)
• 16-тибитные флаги
• Работает в режиме LR...
Memcached
Лучшая документация - это
описание протокола
https://github.com/
memcached/memcached/
blob/master/doc/protocol.t...
Memcached
• get
• set / add / delete / replace
• prepend / append
• touch
• incr / decr
Memcached
• gets / cas
• ключ -C
Эффективное
использование
memcahed
• Много сессий
• Batch запросов
• Настройка потоков (-t)
• UDP
Статистика memcached
• Команда stats
• hits / misses
• evictions
• conn_yields прерывание
батча и ключ (-R)
Memcached slabs и LRU
96
120
…
1M
Head … Tail
Per-slab stats
• stats slabs
• stats items
Кластер memcached
• Клиент выбирает инстанс
(например libketama)
• Используется брокер
(например mcrouter)
Кластер memcached
• Выбор ноды для чтения,
или записи (hash %
num_nodes не работает)
• Consistent hashing ring
Спасибо
Краснощек Юрий
www.cachelot.io
cachelot@cachelot.io
@cachelot_io
Для презентации использованы иконки http://www.fl...
of 34

Кэширование данных в web приложениях. Использование memcached / Юрий Краснощек (Delphi LLC, Dell)

Каждый разработчик web приложений рано или поздно сталкивается с довольно типичной проблемой: перед ним стоит задача построить фабрику по производству омнониевых торсиометров. Фабрика производит омнониевые торсиометры очень быстро, но для калибровки прибора (как известно) необходим омноний, за которым приходится летать на Андромеду. Пока корабль летит до Андромеды, фабрика простаивает. Самый очевидный выход из ситуации - построить склад омнониума прямо рядом с фабрикой. Терминология кэширования Выбор места для кэширования в WEB Выбор данных для кэширования Кэширование на стороне бэкенда Отдельный кэширующий сервис Пара слов о memcached Пара слов о Redis
Published on: Mar 3, 2016
Published in: Engineering      
Source: www.slideshare.net


Transcripts - Кэширование данных в web приложениях. Использование memcached / Юрий Краснощек (Delphi LLC, Dell)

  • 1. Кэширование данных в web приложениях. Использование memcached Краснощёк Юрий
  • 2. Омнониевые торсиометры Каждый разработчик web приложений рано или поздно сталкивается с довольно типичной проблемой: перед ним стоит задача построить фабрику по производству омнониевых торсиометров.
  • 3. Что делать? Нужно применить типовую схему фабрики по производству торсиометров
  • 4. Калибровка для калибровки прибора необходим чистый омноний, за которым приходится летать
  • 5. Склад омнониума Самое очевидное решение проблемы - построить склад рядом с фабрикой
  • 6. Это не бесплатно • Вырастает сложность предприятия • Нужно организовать логистику • Вести складской учет
  • 7. Терминология • Источник чистого омнония - origin • Cклад ограничен по объему - cache size • Поиск образца нужной формы и породы - cache hit / cache miss
  • 8. Терминология • Омнониум быстро портится - freshness • испорченным омнониумом торсиометры калибровать нельзя - stale data
  • 9. Терминология • нужно проверить пригодность - validation • выбросить просроченный омнониум со склада - invalidation
  • 10. Терминология • Иногда случается обидная ситуация: cклад переполняется, и приходится выбрасывать ещё годный омнониум - eviction
  • 11. Браузер HTTP сервер БэкендПрокси Где кэшировать?
  • 12. “Хорошие” данные • Не кэшировать часто изменяющиеся данные • Кэшировать 20% данных, которые используются 80% времени • размер данных имеет значение
  • 13. Кандидаты на кэширование • Статика, картинки и медиа • Java script / CSS / HTML • Объекты бизнес-логики • Временные данные: сессии, статистика
  • 14. HTTP Headers • Expires: • Cache-Control: • Last-Modified: • Etag: • Content-Length: • Vary:
  • 15. Expires Время в формате HTTP-date, до которого контент валиден Expires: Fri, 30 Oct 1998 14:19:41 GMT Нужно использовать, как fallback
  • 16. Cache-Control Новый механизм управления кэшем Cache-Control: max-age=3600, must-revalidate, public Cache-Control: no-cache
  • 17. Cache-Control • no-store указывает на то, что данные нельзя кэшировать ни при каких обстоятельствах
  • 18. HTTP Headers • Expires: • Cache-Control: • Last-Modified: • Etag: • Content-Length: • Vary:
  • 19. Кэш на стороне бэкенда
  • 20. • Бэкенд хранит копии объектов из базы прямо в коде • Используется библиотека, или компонент для кэширования Где хранить?
  • 21. • Используется отдельный кэширующий сервер, или хранилище: memcached, redis, hazelcast, etc. • http://db-engines.com Где хранить?
  • 22. Когда нужен кэширующий сервер • доступ к данным из разных мест • availability • масштабирование
  • 23. noSQL - это хорошо • Низкий latency • Легко хранить плохо структурированные, разнородные данные • Упрощается код хранилища (уменьшается риск порчи данных)
  • 24. Memcached • key value, поддерживает freshness • Фиксированный объем памяти (-m) • 16-тибитные флаги • Работает в режиме LRU, или консистентного кэша
  • 25. Memcached Лучшая документация - это описание протокола https://github.com/ memcached/memcached/ blob/master/doc/protocol.txt
  • 26. Memcached • get • set / add / delete / replace • prepend / append • touch • incr / decr
  • 27. Memcached • gets / cas • ключ -C
  • 28. Эффективное использование memcahed • Много сессий • Batch запросов • Настройка потоков (-t) • UDP
  • 29. Статистика memcached • Команда stats • hits / misses • evictions • conn_yields прерывание батча и ключ (-R)
  • 30. Memcached slabs и LRU 96 120 … 1M Head … Tail
  • 31. Per-slab stats • stats slabs • stats items
  • 32. Кластер memcached • Клиент выбирает инстанс (например libketama) • Используется брокер (например mcrouter)
  • 33. Кластер memcached • Выбор ноды для чтения, или записи (hash % num_nodes не работает) • Consistent hashing ring
  • 34. Спасибо Краснощек Юрий www.cachelot.io cachelot@cachelot.io @cachelot_io Для презентации использованы иконки http://www.flaticon.com/

Related Documents