Распределённые кэши,
блеск и нищета
Алексей Рагозин
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
×

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

558 views

Published on

jug.ru

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
558
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

  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

×