Знакомство с in-memory data grid
TRANSCRIPT
![Page 1: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/1.jpg)
Анатомия распределенного Data Grid на примере
Apache Ignite In-memory Data Fabric
Яков ЖдановCommitter, PMC member
Apache Ignite project
Знакомство с In-Memory Data Grid
![Page 2: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/2.jpg)
ПЛАН
Распределенные системы - обзор.
Apache Ignite - обзор.
• Распределенный кеш:
- основные понятия;
- афинити-функции и балансировка;
- распределенные транзакции – протокол и восстановление
после сбоев.
• Вопросы и ответы.
![Page 3: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/3.jpg)
РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ
Веб-сервер + сервер БД
Балансировка нагрузки между веб-серверами + репликация БД
![Page 4: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/4.jpg)
РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ
Больше ресурсов-Выше производительность-Запас для пиковых нагрузок
Масштабирование системы- Добавление и удаление серверов «на лету»
Отказоустойчивость- Система переживает потерю нескольких серверов
Ресурсы отдельного сервера - Можно использовать даже относительно слабые сервера- Но увеличить их количество
![Page 5: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/5.jpg)
РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ
• Offline (batch) обработка– Data Warehouse;– Hadoop экосистема;
• Online обработка– Дисковые системы – Cassandra, Mongo DB…– In-memory системы – Apache Ignite,
Hazelcast, Gigaspaces…
![Page 6: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/6.jpg)
РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ
RDBMS
L2 CachingNoSQLDistributed Disk SystemsDB replica
In-Memory Data GridsIMDBs
![Page 7: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/7.jpg)
APACHE IGNITE• Старт в 2014 году – http://ignite.apache.org
• На основе открытой версии GridGain.
• Top Level Project в сентябре 2015.
• Сообщество:- http://ignite.apache.org/community.html- 25 коммиттеров.- 26 контрибьюторов.- Ежедневно 10-15 активных тем на user-list и dev-list.
- Приглашаем принять участие!
![Page 8: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/8.jpg)
• In-Memory Data Grid
- Get(), put(), remove(), commit(), rollback()
• SQL-доступ
- Select, avg(), sum(), having, order by
• Binary Objects
- Классы на сервере не нужны!
• Compute grid
- Map-reduce, zero deployment, failover, etc.
• Streaming
• ….
APACHE IGNITE
![Page 9: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/9.jpg)
• Распределенная система:- Больше одного процесса;- Больше одного хоста.
• Все в памяти:- Быстрый доступ.- А, может, и не все или не только в памяти.
• Отказоустойчивость
• Масштабируемость
APACHE IGNITE
![Page 10: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/10.jpg)
ДАВАЙТЕ ВЗГЛЯНЕМ ПОБЛИЖЕ!
![Page 11: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/11.jpg)
С ЧЕГО НАЧАТЬ?APACHE IGNITE
![Page 12: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/12.jpg)
• Важнейшие компоненты- Обнаружение узлов (discovery)- Обмен сообщениями (communication)
• Это база для- Compute grid- Data grid
- И всего остального…
APACHE IGNITE
![Page 13: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/13.jpg)
• Обнаружение узлов
- вход (старт) нового узла
- выход узла из топологии (graceful)
• Детектирование отказов
- Crash процесса (-ов), сетевые сбои
• Обмен метриками (heartbeat exchange)
• Актуальная топология
- Узлы и их свойства
- Версионирование топологии (topology version)
• Дополнительные требования
- Нет специальных ролей – все равны
- Возможность изменения протокола и обратная совместимость
APACHE IGNITE: DISCOVERY
![Page 14: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/14.jpg)
Выбор транспорта- TCP + Java Serialization? Yes!
Какая топология самая эффективная?- Полносвязная?- Звезда?
- Кольцо!Имплементация
- org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi
APACHE IGNITE: DISCOVERY
![Page 15: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/15.jpg)
APACHE IGNITE: DISCOVERY
![Page 16: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/16.jpg)
APACHE IGNITE: DISCOVERY
![Page 17: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/17.jpg)
КАКИЕ ПРОБЛЕМЫ?
1. Длительные GC-паузы.
2. Полуоткрытые соединения (half-open sockets).
3. Сегментация топологии (topology segmentation).
APACHE IGNITE: DISCOVERY
![Page 18: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/18.jpg)
МЫ ПОСТРОИЛИ КЛАСТЕР!
СЛЕДУЮЩИЙ ШАГ?
Научим узлы «общаться» между собой!
![Page 19: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/19.jpg)
• Эффективный обмен сообщениями:
- Отправка и получение
• Эффективная сериализация:- Избегать копирования данных.- Избегать лишних инстанциаций.- Сжимать, если возможно.
• Протокол может меняться:- Проблема совместимости версий
• Восстановление после разрывов соединения
APACHE IGNITE: COMMUNICATION
![Page 20: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/20.jpg)
Транспорт?- TCP & NIO!
Сериализация?- JDK? No!- Другие идеи?
Имплементация- org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi
APACHE IGNITE: COMMUNICATION
![Page 21: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/21.jpg)
Сериализация сообщений в потоках-обработчиках
APACHE IGNITE: COMMUNICATION
![Page 22: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/22.jpg)
Прямая сериализация (direct marshalling)
APACHE IGNITE: COMMUNICATION
![Page 23: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/23.jpg)
APACHE IGNITE: COMMUNICATION
![Page 24: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/24.jpg)
КАКИЕ ПРОБЛЕМЫ?
1. Длительные GC-паузы.
2. Полуоткрытые соединения (half-open sockets).
3. Большое число асинхронных сообщений может
спровоцировать OOME.
APACHE IGNITE: COMMUNICATION
![Page 25: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/25.jpg)
Двигаемся дальше!
APACHE IGNITE
![Page 26: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/26.jpg)
• JCache (JSR 107)- Базовые операции над кешем
- ConcurrentMap APIs
- Колокация логики и данных (EntryProcessor APIs)
- Ивенты и метрики
- Персистентный слой (read&write through)• Ignite Data Grid
- Распределенное хранилище ключ-значение
- ACID транзакции
- SQL запросы (ANSI 99)
- Бинарные объекты (Binary Objects)
- Индексирование данных
- Интеграция с RDBMS
APACHE IGNITE: DATA GRID
![Page 27: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/27.jpg)
APACHE IGNITE: DATA GRID
Режим - PARTITIONED
![Page 28: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/28.jpg)
APACHE IGNITE: DATA GRID
Режим - REPLICATED
![Page 29: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/29.jpg)
APACHE IGNITE: DATA GRID - AFFINITY
Распределение данных– [равномерное] распределение
по партициям;– [равномерное] распределение
по узлам;
Минимизация трафика при балансировке– при изменениях топологии.
![Page 30: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/30.jpg)
APACHE IGNITE: REBALANCING
Меняется топология – необходима балансировка данныхБалансировка
– распределение данных «отстает» от изменений топологии – необходим «обмен картами» распределения
– следующий шаг - обмен данными– операции над не прерываются
![Page 31: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/31.jpg)
APACHE IGNITE: TRANSACTIONSТранзакция – пример кода.
![Page 32: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/32.jpg)
APACHE IGNITE: TRANSACTIONSТранзакция – 2 phase commit протокол.
![Page 33: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/33.jpg)
APACHE IGNITE: TRANSACTIONSТранзакция – восстановление после сбоя.
![Page 34: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/34.jpg)
APACHE IGNITE: TRANSACTIONSТранзакция с участием персистентного хранилища.
![Page 35: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/35.jpg)
APACHE IGNITE: TRANSACTIONSТранзакция с участием персистентного хранилища – восстановление после сбоя.
![Page 36: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/36.jpg)
APACHE IGNITE: TRANSACTIONS
![Page 37: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/37.jpg)
ЗАКЛЮЧЕНИЕРаспределенные системы
Важнейшие компоненты- Обнаружение узлов (discovery)- Обмен сообщениями (communication)
Обзор IMDG - функционал, режимы и афинити
Транзакции- Протокол- Восстановление после сбоев
![Page 38: Знакомство с In-Memory Data Grid](https://reader035.vdocuments.site/reader035/viewer/2022081512/589ee6cc1a28abe97f8b4b69/html5/thumbnails/38.jpg)
ВОПРОСЫ?