SlideShare a Scribd company logo
1 of 26
Download to read offline
Распределённые кэши,
блеск и нищета
Алексей Рагозин
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
линейная масштабируемость
по серверам и по ядрам
Когерентность данных
Проблема гидрации
java.util.HashMap
 100GiB – легко
 1M RPS – легко
Хранение данных
в памяти одного
процесса зачастую
на порядок
эффективнее
распределенного
Может быть полезно, иногда
Killer feature !!!
Кэш и бизнес логика
Кэш API должен органично стыковаться с
языком бизнес логики
 Один язык
 “Толстая” библиотека
 Rich API
 Client side features: L1 caching, etc
 Хранение Java объектов
 Yet another serialization for Java
Кэш и сквозное чтение
 Сквозное чтение – read through
 Сквозная запись – write through
 Отложенная запись – write behind
PRO: Кэш–логическийинтерфейскхранилищу
CON: Нюансы интеграции
Cluster shared memory
Решение проблемы “shared state” для
“share nothing” кластеров
 Быстрый доступ (In-memory)
 Когерентность данных
 “Атомарные” операции
Redis
Пример “shared state” сервиса для PHP
и других типичных web технологий
Уроки, которые я выучил при работе с Oracle
Coherence и другими распределёнными
хранилищами.
Под грифом IMHO
Распределённость …
Технологии для диссертаций
 Paxos
 Consistent hashing
Технологии для enterprise решений
 Партицирование
 Ведущий – ведомый (протокол консенсуса нужен
только для выбора ведущего)
Key / Value модель
Key / Value модель требует денормализации!
 Минимизация числа запросов
 Проблемы с referral integrity между
таблицами
 Проблемы атомарности изменений
Кэш – это индекс
Кэш — вспомогательная структура данных,
позволяющая сократить время выполнения
запросов к хранилищу данных.
Модель данных кэша должна выбираться
исходя из запросов, время выполнения
которых вы хотите сократить!
Распределённые очереди
Неделайтеизкэша распределённуюочередь
Неделайте!
Не делайте!
Есливамнужнаочередь,возьмитеочередь
Опыт работы с Coherence
Решения делятся на те, которые
Просто работают
 web sessions, мало нагруженные кэши, …
Просто работают, при правильном дизайне
 all in-memory, proactive caching
Постоянно доставляют проблемы
 Тесная интеграция с БД, “распределённая” бизнес
логика
Coherence + DB = …
Распределённый кэш
 Быстрые операции
 Высокая конкурентной
 Наивная потоковая модель
 java.util.Map контракт
База данных
 Широкий разбросc времён выполнения операций
 Вариативная производительность
 JDBC
Coherence + DB = …
Problem
Learn
Tune
Something
changes
Cache and
database
disharmonized
All in-memory, proactive caching
Данные грузятся в кэш заранее
 Источник данных исчезает с критического пути
 Проблема загрузки данных
 Проблема частичного восстановления данных
 Проблема синхронизации данных с источником
 Не панацея
 In-memory не значит супер быстро
 Есть запросы, которые могут убить кэш
Другие антипаттерны
Распределённыйкэш–невычислительныйгрид
 Архитектура потоков не рассчитана на тяжёлые
вычисления
Злоупотребления размером данных
 Key и Value должны быть разумного размера
 Батчи должены быть разумного размера
IO операции в потоке обработки данных
 Например обращение к соседнему
распределённому кэшу
Учите мат. часть
Какой MTU настроен в вашей OS?
Какой MTU настроен в вашем свитче?
Мониторителивыошибкисетевыхинтерфейсов?
Какой у вас JDBC пул?
Используете ли вы отдельный read-only пул?
Используется ли у вас FIFO очередь JDBC пуле?
Распределённые кэши,
перспективы и спекуляции
Под грифом 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 и прочие
 Уменьшение хайфа
 Вытеснение кэшей из областей лежащих за
пределамиуровнябизнеслогикиNoSQLрешениями
 Новые стандарты серверов приложений?
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

More Related Content

What's hot

Александр Шуйсков (NAUMEN): перспективы развития Database as a Service
Александр Шуйсков (NAUMEN): перспективы развития Database as a ServiceАлександр Шуйсков (NAUMEN): перспективы развития Database as a Service
Александр Шуйсков (NAUMEN): перспективы развития Database as a ServiceKirill Rubinshteyn
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиElizaveta Alekseeva
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиYuri Yashkin
 
Кирилл Алешин, Ламбда Архитектура на практике
Кирилл Алешин, Ламбда Архитектура на практикеКирилл Алешин, Ламбда Архитектура на практике
Кирилл Алешин, Ламбда Архитектура на практикеTanya Denisyuk
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusOntico
 
Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6Technopark
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеIT Share
 
Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016Andrey Karpov
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchИлья Середа
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopAlexey Bokov
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Борьба с GС паузами в JVM
Борьба с GС паузами в JVMБорьба с GС паузами в JVM
Борьба с GС паузами в JVMaragozin
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностейAleksey Solntsev
 
Daa sforit+infrastructure rbs_case
Daa sforit+infrastructure rbs_caseDaa sforit+infrastructure rbs_case
Daa sforit+infrastructure rbs_caseSergii Stukan
 
2016 06 VMEx - intro (russian)
2016 06 VMEx - intro (russian)2016 06 VMEx - intro (russian)
2016 06 VMEx - intro (russian)Andrey Karpov
 
MONT Решения Micro Focus для резервного копирования
MONT Решения Micro Focus для резервного копированияMONT Решения Micro Focus для резервного копирования
MONT Решения Micro Focus для резервного копированияYuri Yashkin
 
Дедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДДедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДКРОК
 

What's hot (20)

Highload: проблемы и решения
Highload: проблемы и решенияHighload: проблемы и решения
Highload: проблемы и решения
 
Александр Шуйсков (NAUMEN): перспективы развития Database as a Service
Александр Шуйсков (NAUMEN): перспективы развития Database as a ServiceАлександр Шуйсков (NAUMEN): перспективы развития Database as a Service
Александр Шуйсков (NAUMEN): перспективы развития Database as a Service
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
Модернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитикиМодернизация хранилища данных для использования передовой аналитики
Модернизация хранилища данных для использования передовой аналитики
 
Кирилл Алешин, Ламбда Архитектура на практике
Кирилл Алешин, Ламбда Архитектура на практикеКирилл Алешин, Ламбда Архитектура на практике
Кирилл Алешин, Ламбда Архитектура на практике
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
 
Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
 
2 bdw.key
2 bdw.key2 bdw.key
2 bdw.key
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Борьба с GС паузами в JVM
Борьба с GС паузами в JVMБорьба с GС паузами в JVM
Борьба с GС паузами в JVM
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
 
Daa sforit+infrastructure rbs_case
Daa sforit+infrastructure rbs_caseDaa sforit+infrastructure rbs_case
Daa sforit+infrastructure rbs_case
 
2016 06 VMEx - intro (russian)
2016 06 VMEx - intro (russian)2016 06 VMEx - intro (russian)
2016 06 VMEx - intro (russian)
 
MONT Решения Micro Focus для резервного копирования
MONT Решения Micro Focus для резервного копированияMONT Решения Micro Focus для резервного копирования
MONT Решения Micro Focus для резервного копирования
 
Дедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДДедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОД
 

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

11 - Hadoop. NoSQL
11 - Hadoop. NoSQL11 - Hadoop. NoSQL
11 - Hadoop. NoSQLRoman Brovko
 
Rybak Big Projects New
Rybak Big Projects NewRybak Big Projects New
Rybak Big Projects NewOntico
 
Практика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopПрактика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopYury Petrov
 
Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Andrey Akulov
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам? Andrey Korshikov
 
Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыPavel Veinik
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Fwdays
 
UFADevCom'13#1 Шерыхалин Олег
UFADevCom'13#1 Шерыхалин ОлегUFADevCom'13#1 Шерыхалин Олег
UFADevCom'13#1 Шерыхалин ОлегUFADevCom
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricksSveta Bozhko
 
Top big data architecture patterns by Igor Chub
Top big data architecture patterns  by Igor ChubTop big data architecture patterns  by Igor Chub
Top big data architecture patterns by Igor Chub.NET User Group Dnipro
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхСергей Макрушин
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхSergey Makrushin
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...HappyDev-lite
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхSergey Xek
 

Similar to Блеск и нищета распределённых кэшей (20)

11 - Hadoop. NoSQL
11 - Hadoop. NoSQL11 - Hadoop. NoSQL
11 - Hadoop. NoSQL
 
Nrdbms
NrdbmsNrdbms
Nrdbms
 
Rybak Big Projects New
Rybak Big Projects NewRybak Big Projects New
Rybak Big Projects New
 
Практика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopПрактика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему Hadoop
 
Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
 
Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисы
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
 
UFADevCom'13#1 Шерыхалин Олег
UFADevCom'13#1 Шерыхалин ОлегUFADevCom'13#1 Шерыхалин Олег
UFADevCom'13#1 Шерыхалин Олег
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Top big data architecture patterns by Igor Chub
Top big data architecture patterns  by Igor ChubTop big data architecture patterns  by Igor Chub
Top big data architecture patterns by Igor Chub
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данныхИнформационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 

More from aragozin

Java on Linux for devs and ops
Java on Linux for devs and opsJava on Linux for devs and ops
Java on Linux for devs and opsaragozin
 
I know why your Java is slow
I know why your Java is slowI know why your Java is slow
I know why your Java is slowaragozin
 
Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)aragozin
 
Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016aragozin
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Javaaragozin
 
What every Java developer should know about network?
What every Java developer should know about network?What every Java developer should know about network?
What every Java developer should know about network?aragozin
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourselfaragozin
 
DIY Java Profiler
DIY Java ProfilerDIY Java Profiler
DIY Java Profileraragozin
 
Java black box profiling
Java black box profilingJava black box profiling
Java black box profilingaragozin
 
JIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsJIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsaragozin
 
Casual mass parallel computing
Casual mass parallel computingCasual mass parallel computing
Casual mass parallel computingaragozin
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvmaragozin
 
Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)aragozin
 
Garbage collection in JVM
Garbage collection in JVMGarbage collection in JVM
Garbage collection in JVMaragozin
 
Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)aragozin
 
Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?aragozin
 
Cборка мусора в Java без пауз (HighLoad++ 2013)
Cборка мусора в Java без пауз  (HighLoad++ 2013)Cборка мусора в Java без пауз  (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)aragozin
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)aragozin
 
Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)aragozin
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherencearagozin
 

More from aragozin (20)

Java on Linux for devs and ops
Java on Linux for devs and opsJava on Linux for devs and ops
Java on Linux for devs and ops
 
I know why your Java is slow
I know why your Java is slowI know why your Java is slow
I know why your Java is slow
 
Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)
 
Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Java
 
What every Java developer should know about network?
What every Java developer should know about network?What every Java developer should know about network?
What every Java developer should know about network?
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourself
 
DIY Java Profiler
DIY Java ProfilerDIY Java Profiler
DIY Java Profiler
 
Java black box profiling
Java black box profilingJava black box profiling
Java black box profiling
 
JIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsJIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutions
 
Casual mass parallel computing
Casual mass parallel computingCasual mass parallel computing
Casual mass parallel computing
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvm
 
Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)
 
Garbage collection in JVM
Garbage collection in JVMGarbage collection in JVM
Garbage collection in JVM
 
Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)
 
Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?
 
Cборка мусора в Java без пауз (HighLoad++ 2013)
Cборка мусора в Java без пауз  (HighLoad++ 2013)Cборка мусора в Java без пауз  (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
 
Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherence
 

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

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