Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Распределённые кэши,
блеск и нищета
Алексей Рагозин
jug.ru
Июнь 2014
Проблема выбора
Базворды
• Key value
• Distributed Hash Table
• In-memory
• Horizontal scalability
• Redundant storage
3 tier architecture
Data tier
Business logic tier
Presentation tier
Cache
Storage
Хранилище
Основная задача
‐ долговременноехранение
Худшее,чтоможетслучиться
‐ потеряданных
Время жизни данных
‐ годы
О...
Распределённость кэша
Ёмкость
до единиц TiB
Времядоступа
сетевые задержки + 0.5 ms
Request per Second
линейная масштаби...
Кэш и бизнес логика
Кэш API должен органично стыковаться с
языком бизнес логики
 Один язык
 “Толстая” библиотека
 Rich ...
Кэш и сквозное чтение
 Сквозное чтение – read through
 Сквозная запись – write through
 Отложенная запись – write behin...
Cluster shared memory
Решение проблемы “shared state” для
“share nothing” кластеров
 Быстрый доступ (In-memory)
 Когерен...
Уроки, которые я выучил при работе с Oracle
Coherence и другими распределёнными
хранилищами.
Под грифом IMHO
Распределённость …
Технологии для диссертаций
 Paxos
 Consistent hashing
Технологии для enterprise решений
 Партицирова...
Key / Value модель
Key / Value модель требует денормализации!
 Минимизация числа запросов
 Проблемы с referral integrity...
Кэш – это индекс
Кэш — вспомогательная структура данных,
позволяющая сократить время выполнения
запросов к хранилищу данны...
Распределённые очереди
Неделайтеизкэша распределённуюочередь
Неделайте!
Не делайте!
Есливамнужнаочередь,возьмитеочередь
Опыт работы с Coherence
Решения делятся на те, которые
Просто работают
 web sessions, мало нагруженные кэши, …
Просто раб...
Coherence + DB = …
Распределённый кэш
 Быстрые операции
 Высокая конкурентной
 Наивная потоковая модель
 java.util.Map...
Coherence + DB = …
Problem
Learn
Tune
Something
changes
Cache and
database
disharmonized
All in-memory, proactive caching
Данные грузятся в кэш заранее
 Источник данных исчезает с критического пути
 Проблема з...
Другие антипаттерны
Распределённыйкэш–невычислительныйгрид
 Архитектура потоков не рассчитана на тяжёлые
вычисления
Злоуп...
Учите мат. часть
Какой MTU настроен в вашей OS?
Какой MTU настроен в вашем свитче?
Мониторителивыошибкисетевыхинтерфейсов?...
Распределённые кэши,
перспективы и спекуляции
Под грифом IMHO
Попытки стандартизации
• JSR 107: JCACHE – Java Temporary Caching API
• JSR 347: Data Grids for the Java™ Platform
Нужно л...
В облаках побеждает железо
На плохо настроенном железе,
любой софт работает плохо
Вертикально интегрированная аппаратно
пр...
Cache is a feature
Кэш – галочка сервера приложений
 Часть business logic tier
 Насаждение правильных паттернов
Спекуляции о будущем
 Развитие Open source – Hazelcast и прочие
 Уменьшение хайфа
 Вытеснение кэшей из областей лежащих...
Thank you
Alexey Ragozin
alexey.ragozin@gmail.com
http://blog.ragozin.info
- my articles
http://code.google.com/p/gridkit
...
Upcoming SlideShare
Loading in …5
×

Блеск и нищета распределённых кэшей

643 views

Published on

jug.ru

Published in: Technology

Блеск и нищета распределённых кэшей

  1. 1. Распределённые кэши, блеск и нищета Алексей Рагозин jug.ru Июнь 2014
  2. 2. Проблема выбора
  3. 3. Базворды • Key value • Distributed Hash Table • In-memory • Horizontal scalability • Redundant storage
  4. 4. 3 tier architecture Data tier Business logic tier Presentation tier Cache Storage
  5. 5. Хранилище Основная задача ‐ долговременноехранение Худшее,чтоможетслучиться ‐ потеряданных Время жизни данных ‐ годы Операционная модель ‐ “база данных” Распределённый кэш Основная задача ‐ высокая доступность сервиса ‐ малоевремядоступакданным Худшее,чтоможетслучиться ‐ возврат неактуальных данных Время жизни данных ‐ до перезапуска Операционная модель ‐ “модуль приложения” Кэши и хранилища
  6. 6. Распределённость кэша Ёмкость до единиц TiB Времядоступа сетевые задержки + 0.5 ms Request per Second линейная масштабируемость по серверам и по ядрам Когерентность данных Проблема гидрации java.util.HashMap  100GiB – легко  1M RPS – легко Хранение данных в памяти одного процесса зачастую на порядок эффективнее распределенного Может быть полезно, иногда Killer feature !!!
  7. 7. Кэш и бизнес логика Кэш API должен органично стыковаться с языком бизнес логики  Один язык  “Толстая” библиотека  Rich API  Client side features: L1 caching, etc  Хранение Java объектов  Yet another serialization for Java
  8. 8. Кэш и сквозное чтение  Сквозное чтение – read through  Сквозная запись – write through  Отложенная запись – write behind PRO: Кэш–логическийинтерфейскхранилищу CON: Нюансы интеграции
  9. 9. Cluster shared memory Решение проблемы “shared state” для “share nothing” кластеров  Быстрый доступ (In-memory)  Когерентность данных  “Атомарные” операции Redis Пример “shared state” сервиса для PHP и других типичных web технологий
  10. 10. Уроки, которые я выучил при работе с Oracle Coherence и другими распределёнными хранилищами. Под грифом IMHO
  11. 11. Распределённость … Технологии для диссертаций  Paxos  Consistent hashing Технологии для enterprise решений  Партицирование  Ведущий – ведомый (протокол консенсуса нужен только для выбора ведущего)
  12. 12. Key / Value модель Key / Value модель требует денормализации!  Минимизация числа запросов  Проблемы с referral integrity между таблицами  Проблемы атомарности изменений
  13. 13. Кэш – это индекс Кэш — вспомогательная структура данных, позволяющая сократить время выполнения запросов к хранилищу данных. Модель данных кэша должна выбираться исходя из запросов, время выполнения которых вы хотите сократить!
  14. 14. Распределённые очереди Неделайтеизкэша распределённуюочередь Неделайте! Не делайте! Есливамнужнаочередь,возьмитеочередь
  15. 15. Опыт работы с Coherence Решения делятся на те, которые Просто работают  web sessions, мало нагруженные кэши, … Просто работают, при правильном дизайне  all in-memory, proactive caching Постоянно доставляют проблемы  Тесная интеграция с БД, “распределённая” бизнес логика
  16. 16. Coherence + DB = … Распределённый кэш  Быстрые операции  Высокая конкурентной  Наивная потоковая модель  java.util.Map контракт База данных  Широкий разбросc времён выполнения операций  Вариативная производительность  JDBC
  17. 17. Coherence + DB = … Problem Learn Tune Something changes Cache and database disharmonized
  18. 18. All in-memory, proactive caching Данные грузятся в кэш заранее  Источник данных исчезает с критического пути  Проблема загрузки данных  Проблема частичного восстановления данных  Проблема синхронизации данных с источником  Не панацея  In-memory не значит супер быстро  Есть запросы, которые могут убить кэш
  19. 19. Другие антипаттерны Распределённыйкэш–невычислительныйгрид  Архитектура потоков не рассчитана на тяжёлые вычисления Злоупотребления размером данных  Key и Value должны быть разумного размера  Батчи должены быть разумного размера IO операции в потоке обработки данных  Например обращение к соседнему распределённому кэшу
  20. 20. Учите мат. часть Какой MTU настроен в вашей OS? Какой MTU настроен в вашем свитче? Мониторителивыошибкисетевыхинтерфейсов? Какой у вас JDBC пул? Используете ли вы отдельный read-only пул? Используется ли у вас FIFO очередь JDBC пуле?
  21. 21. Распределённые кэши, перспективы и спекуляции Под грифом IMHO
  22. 22. Попытки стандартизации • JSR 107: JCACHE – Java Temporary Caching API • JSR 347: Data Grids for the Java™ Platform Нужно ли это?
  23. 23. В облаках побеждает железо На плохо настроенном железе, любой софт работает плохо Вертикально интегрированная аппаратно программная платформа, позволяет  обеспечить производительность  дифференцировать продукт от конкурентов
  24. 24. Cache is a feature Кэш – галочка сервера приложений  Часть business logic tier  Насаждение правильных паттернов
  25. 25. Спекуляции о будущем  Развитие Open source – Hazelcast и прочие  Уменьшение хайфа  Вытеснение кэшей из областей лежащих за пределамиуровнябизнеслогикиNoSQLрешениями  Новые стандарты серверов приложений?
  26. 26. Thank you Alexey Ragozin alexey.ragozin@gmail.com http://blog.ragozin.info - my articles http://code.google.com/p/gridkit http://github.com/gridkit - my open source code http://aragozin.timepad.ru - community events in Moscow

×