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.

Распределённый кэш или хранилище данных. Что выбрать?

5,042 views

Published on

Слайды с JavaOne 2013 Москва

Published in: Technology
  • Be the first to comment

Распределённый кэш или хранилище данных. Что выбрать?

  1. 1. Russia Development CentreDeutsche BankDeutsche BankGroup Technology & OperationsРаспределённый кэшили key-value хранилище,что выбрать?Алексей Рагозин, Deutsche Bank
  2. 2. Russia Development CentreDeutsche BankПроблема выбора
  3. 3. Russia Development CentreDeutsche BankПроблема выбора
  4. 4. Russia Development CentreDeutsche BankБольшое количество альтернатив• Coherence • Hazelcast • GemFire • Infinispan • EHCache …Попытки стандартизации• JSR 107: JCACHE – Java Temporary Caching API• JSR 347: Data Grids for the Java™ Platform“In memory data grid” – альтернативный терминРаспределённый кэши в Java
  5. 5. Russia Development CentreDeutsche BankТипичный feature set Линейная масштабируемость Распределённая хеш таблица Отказоустойчивость (резервные копии данных) Хранение данных на дискеТребует выделенной инфраструктурыКэши и хранилища
  6. 6. Russia Development CentreDeutsche BankKey-Value хранилище Основная задача- долго временное хранение Худшее, что может случиться- потеря данных Время жизни данных- годы Операционная модель- база данныхКэши и хранилищаРаспределённый кэш Основная задача- бесперебойность сервиса Худшее, что может случиться- возврат неактуальных данных Время жизни данных- до перезапуска Операционная модель- часть приложения
  7. 7. Russia Development CentreDeutsche BankРеляционная Key/Value Объектная ДокументнаяЕдиница хранения record key/value pair entities/relations documentОтношения нет нет да нетРабота с “полями” да нет да даОсобенности 1st NR* - Обход графа -Модели данных* Данные переменной длинны (BLOB, CLOB) обычно физически не хранятся в таблице
  8. 8. Russia Development CentreDeutsche BankМодели данныхМодель данных распределённого кэша Наиболее близка в документ-ориентированной модели Единица хранения – Java объект / POJO (маленький граф) Нет связей между единицами хранения Data affinity (следствие использование DHT)
  9. 9. Russia Development CentreDeutsche BankКто должен владеть кэшем?DBA команда – отвечает за долго временное хранилище Кэш обычно имеет выделенную инфраструктуру Кэш ориентирован на работу с даннымКоманда приложения – использует БД как сервис Логика и структура кэша ориентированная на приложение Данные в кэше имеют короткий срок жизни Кэш требует доступ к классам приложенияОперационная модель
  10. 10. Russia Development CentreDeutsche BankКто должен владеть кэшем?DBA команда – отвечает за долго временное хранилище Кэш обычно имеет выделенную инфраструктуру Кэш ориентирован на работу с даннымКоманда приложения – использует БД как сервис Логика и структура кэша ориентированная на приложение Данные в кэше имеют короткий срок жизни Кэш требует доступ к классам приложенияОперационная модельКэш должен развиватьсякак часть приложения
  11. 11. Russia Development CentreDeutsche BankКто должен владеть кэшем?DBA команда – отвечает за долго временное хранилище Кэш обычно имеет выделенную инфраструктуру Кэш ориентирован на работу с даннымКоманда приложения – использует БД как сервис Логика и структура кэша ориентированная на приложение Данные в кэше имеют короткий срок жизни Кэш требует доступ к классам приложенияОперационная модельКэш должен развиватьсякак часть приложенияNoSQL хранилищаCassandra,OracleNoSQL,Hbase*…
  12. 12. Russia Development CentreDeutsche BankЧто если кэш используется разными приложениями?Операционная модельCaching serviceApplication A Application B
  13. 13. Russia Development CentreDeutsche BankSmart CacheИнфраструктура распределённого кэша – JavaДанные – POJOПрикладная логика JAVAМы может выполнять часть прикладной логики на инфраструктурераспределенного кэша Локальный доступ к данным, in-place обработка Map/Reduce обработка на кэше (пример – select distinct) Триггеры (пример – хранение истории обновлений)Синергия Java
  14. 14. Russia Development CentreDeutsche BankSmart CacheИнфраструктура распределённого кэша – JavaДанные – POJOПрикладная логика JAVAМы может выполнять часть прикладной логики на инфраструктурераспределенного кэша Локальный доступ к данным, in-place обработка Map/Reduce обработка на кэше (пример – select distinct) Триггеры (пример – хранение истории обновлений)Синергия Java
  15. 15. Russia Development CentreDeutsche BankКонцепция “временного хранилища” Кэш и БД работают независимоСхемы “кеширования”
  16. 16. Russia Development CentreDeutsche BankКонцепция “временного хранилища” Кэш как точка обмена трафиком междуприложениями в распределённой системе“cluster shared memory”Схемы “кеширования”Application ACacheApplication CApplication BApplication D
  17. 17. Russia Development CentreDeutsche BankКонцепция “иерархии памяти” Кэш – фасад доступа к данным Классичекие стратегии Сквозное чтение Сквозная запись Отложенная записьСхемы “кеширования”ApplicationStorageCache
  18. 18. Russia Development CentreDeutsche BankКонсолидированноепредставлениепартицированныхисточников данныхВариации на темуApplicationCacheDB A DB B DB C
  19. 19. Russia Development CentreDeutsche BankОбеспечение даннымивычислительного кластераПроблемы Тысячи потребителей Синхронный стартВариации на темуCacheDatabase
  20. 20. Russia Development CentreDeutsche BankNoSQL хранилище Eventual consistency Гибридное хранение• диск + память Persistent+ тёплый старт кэша Необходим маршалинг данных Нетподдержки “иерархии памяти”Выбор кэшаРаспределённый кэш Consistency first philosophyлучше потерять данные чемвернуть устаревшие Фокус на хранение в памяти• бесперебойность сервиса Transient• есть решения для сохранения /восстановления из снепшотов
  21. 21. Russia Development CentreDeutsche BankNoSQL хранилище Eventual consistency Гибридное хранение• диск + память Persistent+ тёплый старт кэша Необходим маршалинг данных Нетподдержки “иерархии памяти”Выбор кэшаРаспределённый кэш Consistency first philosophyлучше потерять данные чемвернуть устаревшие Фокус на хранение в памяти• бесперебойность сервиса Transient• есть решения для сохранения /восстановления из снапшотов
  22. 22. Russia Development CentreDeutsche BankПолнотекстовый поисковый индекс в качестве кэша Эффективное индексирование для определённого типа запросов Дорогое изменение данныхЭффективное узкоспециализированное решение Статические данные (не слишком динамические данные) Специфические запросы к даннымВыбор кэша
  23. 23. Russia Development CentreDeutsche BankА какую задачу решает кэш в вашей архитектуре? Оптимизация тяжёлых запросов Масштабирование по числу клиентов Масштабирование по числу запросов Уменьшение времени доступа к даннымВыбор кэша
  24. 24. Russia Development CentreDeutsche BankNoSQL хранилище Пропускная способность Объём Линейное масштабированиеВыбор хранилищаRDBMS Зрелая инфраструктура Резервное копированиеотказоустойчивость не отменяетнеобходимость резервного копирования Репликация• репликация между хранилищами• например PROD - UAT
  25. 25. Russia Development CentreDeutsche BankНе думайте про кэш, как про кэшКэш, в архитектуре приложения,– это специализированный индекс Агрессивная денормализация Дублирование данных Использование поисковых индексовОрганизация кэша
  26. 26. Russia Development CentreDeutsche BankВсе технологии имеют сильные и слабые стороны Комбинируйте сильные!Операционные моментычасто оказываются важнее технических Всегда есть самое слабое звено Поставьте себя на место инженера поддержки Опыт рождается из ошибокИтоги
  27. 27. Russia Development CentreDeutsche BankDeutsche BankGroup Technology & OperationsСпасибоАлексей Рагозин, Deutsche Bankalexey.ragozin@gmail.comhttp://blog.ragozin.info

×