207
PGNiG GROUP CONSOLIDATED FULL-YEAR REPORT FOR 2016 (in PLN million, unless stated otherwise) Polskie Górnictwo Naftowe i Gazownictwo SA Separate Full-Year Report of PGNiG S.A. for the period January 1st 2016 – December 31st 2016

Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

  • Upload
    others

  • View
    28

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

АнатомияраспределенногоDataGridнапримере

ApacheIgnite In-memoryDataFabric

ЯковЖдановCommitter,PMCmemberApacheIgniteproject

Page 2: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

ПРЕДУПРЕЖДЕНИЕВ ЭТОМ ДОКЛАДЕ НЕТ НИЧЕГО НОВОГО

Page 3: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

ВЕДЬ МЫ БУДЕМ ГОВОРИТЬ О КОДЕ, КОТОРЫЙ УЖЕ НЕКОТОРОЕ ВРЕМЯ НАХОДИТСЯ В ОТКРЫТОМ ДОСТУПЕ

ПРЕДУПРЕЖДЕНИЕ

Page 4: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

ПЛАНApache Ignite обзор.

Важнейшие компоненты системы.

• Распределенный кеш:

- основные понятия;

- афинити-функции и балансировка;

- распределенные транзакции – протокол и

восстановление после сбоев.

• Вопросы и ответы.

Page 5: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

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 6: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

• 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 7: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

• Распределенная система:- Больше одного процесса;- Больше одного хоста.

• Все в памяти:- Быстрый доступ.- А, может, и не все или не только в памяти.

• Отказоустойчивость

• Масштабируемость

APACHE IGNITE

Page 8: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

ДАВАЙТЕ ВЗГЛЯНЕМ ПОБЛИЖЕ!

Page 9: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

С ЧЕГО НАЧАТЬ?APACHE IGNITE

Page 10: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

• Важнейшие компоненты- Обнаружение узлов (discovery)- Обмен сообщениями (communication)

• Это база для- Compute grid- Data grid- И всего остального…

APACHE IGNITE

Page 11: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

• Обнаружение узлов

- вход (старт) нового узла- выход узла из топологии (graceful)

• Детектирование отказов

- Crash процесса (-ов), сетевые сбои

• Обмен метриками (heartbeat exchange)

• Актуальная топология

- Узлы и их свойства- Версионирование топологии (topology version)

• Дополнительные требования

- Нет специальных ролей – все равны- Возможность изменения протокола и обратная совместимость

APACHE IGNITE: DISCOVERY

Page 12: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

Выбор транспорта- TCP + Java Serialization? Yes!

Какая топология самая эффективная?- Полносвязная?- Звезда?- Кольцо!

Имплементация- org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi

APACHE IGNITE: DISCOVERY

Page 13: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: DISCOVERY

Page 14: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: DISCOVERY

Page 15: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

КАКИЕ ПРОБЛЕМЫ?

1. Длительные GC-паузы.

2. Полуоткрытые соединения (half-open sockets).

3. Сегментация топологии (topology segmentation).

APACHE IGNITE: DISCOVERY

Page 16: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

МЫ ПОСТРОИЛИ КЛАСТЕР!

СЛЕДУЮЩИЙ ШАГ?

Научим узлы «общаться» между собой!

Page 17: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

• Эффективный обмен сообщениями:

- Отправка и получение

• Эффективная сериализация:- Избегать копирования данных.- Избегать лишних инстанциаций.- Сжимать, если возможно.

• Протокол может меняться:- Проблема совместимости версий

• Восстановление после разрывов соединения

APACHE IGNITE: COMMUNICATION

Page 18: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

Транспорт?- TCP & NIO!

Сериализация?- JDK? No!- Другие идеи?

Имплементация- org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi

APACHE IGNITE: COMMUNICATION

Page 19: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

Сериализация сообщений в потоках-обработчиках

APACHE IGNITE: COMMUNICATION

Page 20: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

Прямая сериализация (direct marshalling)

APACHE IGNITE: COMMUNICATION

Page 21: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: COMMUNICATION

Page 22: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

КАКИЕ ПРОБЛЕМЫ?

1. Длительные GC-паузы.

2. Полуоткрытые соединения (half-open sockets).

3. Большое число асинхронных сообщений может

спровоцировать OOME.

APACHE IGNITE: COMMUNICATION

Page 23: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

Двигаемся дальше!

APACHE IGNITE

Page 24: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

• 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 25: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: DATA GRID

Режим - PARTITIONED

Page 26: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: DATA GRID

Режим - REPLICATED

Page 27: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: DATA GRID - AFFINITY

Распределениеданных– [равномерное] распределениепопартициям;

– [равномерное] распределениепоузлам;

Минимизациятрафикаприбалансировке– приизмененияхтопологии.

Page 28: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: REBALANCING

Меняетсятопология– необходимабалансировкаданныхБалансировка

– распределениеданных«отстает»отизмененийтопологии– необходим«обменкартами»распределения

– следующийшаг- обменданными– операциинаднепрерываются

Page 29: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: TRANSACTIONSТранзакция– примеркода.

Page 30: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: TRANSACTIONSТранзакция– 2phasecommitпротокол.

Page 31: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: TRANSACTIONSТранзакция– восстановлениепослесбоя.

Page 32: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: TRANSACTIONSТранзакциясучастиемперсистентногохранилища.

Page 33: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: TRANSACTIONSТранзакциясучастиемперсистентногохранилища–восстановлениепослесбоя.

Page 34: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

APACHE IGNITE: TRANSACTIONS

Page 35: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

ЗАКЛЮЧЕНИЕ• Важнейшие компоненты

- Обнаружение узлов (discovery)- Обмен сообщениями (communication)

• Обзор IMDG функционал, режимы и афинити

Транзакции- Протокол- Восстановление после сбоев- Live coding – “Deadlock-free” transactions

Page 36: Анатомия распределенного Data Grid на примере Apache ...public.jugru.org/jpoint/2016/msk/day_2/track_5/zhdanov.pdf · Анатомия распределенного

ВОПРОСЫ?