In Memory Data Grids


Alexey Kharlamov
Development Manager
Grid Dynamics, 2009
О этот новый мир
     ●Web 2.0: AJAX и стремление к высокой
     интерактивности
     ●   Экспоненциальный рост трафика
  ...
Что же делать?
●
    Расти вширь — использовать параллельную обработку (scale
    out)
●
    Гауссовское распределение — н...
Определение
  ●
      Grid — а что это вообще такое?
      ●
          Машины действующие совместно
          для решения ...
●
    Ассоциативный массив
●
    Данные делятся на
    разделы/партиции
●
    Партиция реплицируются
    на несколько узлов
Динамический кластер
●
    ПО Grid-а автоматически управляет узлами
●
    Большое число партиций
●
    Появление нового уз...
Кеширование базы данных
      ●
          Когда
          ●
              Есть паттерн доступа в кеш
          ●
         ...
Все свое ношу с собой
     ●
         Когда: безкомпромисный read/write; 20/80
     ●
         Что
         ●
            ...
Когда использовать
●
    Скорость чтения/записи критична
●
    Запросы к данным постоянны
●
    Ваши данные влазят в 1ТБ
●...
Когда использовать
●
    НО
    ●
         Объем данных в памяти и в БД отличается в разы
    ●
         Разработка и адми...
Дизайн данных
●
    Самый быстрый доступ по главному ключу
●
    Помещайте родственные данные в одну партицию
    ●
      ...
Дизайн: Ускорение доступа
●
    Используйте денормализацию данных
    ●
        Некоторые данные можно дублировать в неско...
Транзакций
●
    IMDG — распределенная система: мы должны
    использовать 2PC
    ●
        Уже на 8 узлах скорость падае...
Перевод денег: шаг 1
●
    Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма,
    статус:начат)
●
    Считат...
Перевод денег: шаг 2
●
    Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма,
    статус:списано)
●
    Счит...
Перевод денег: завершение
●
    Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма,
    статус:начисленно)
●
...
Oracle
                            Gigaspaces     GemFire      Hazelcast   Terracotta
              Coherence
Координация ...
Заключение
●
    П ри пом ощ и I M D G вы м о ж ете
    ●
        Радикально уменьшить нагрузку на БД и время отклика
    ...
Материалы
●
    http://blog.griddynamics.com/
●
    Сайты вендоров, особенно форумы поддержки
●
    InfoQ: http://www.info...
Вопросы ?
Спасибо

Alexey Kharlamov
Development Manager
Grid Dynamics, 2009
Upcoming SlideShare
Loading in …5
×

High Load 2009 Imdg Presentation

1,620 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,620
On SlideShare
0
From Embeds
0
Number of Embeds
827
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

High Load 2009 Imdg Presentation

  1. 1. In Memory Data Grids Alexey Kharlamov Development Manager Grid Dynamics, 2009
  2. 2. О этот новый мир ●Web 2.0: AJAX и стремление к высокой интерактивности ● Экспоненциальный рост трафика ● Закон Мура умирает ● Рост степени интеграции замедляется ● Увеличение плотности упаковки не ведет к росту производительности • Ж ел ез о про дол ж а ет деш еветь
  3. 3. Что же делать? ● Расти вширь — использовать параллельную обработку (scale out) ● Гауссовское распределение — наш спаситель! ● Мы можем делать только 20% работы и получать 80% заработной платы ● Использовать принцип пули ● Сделать работу заранее и сохранить ее в памяти ● П а м ять продо л ж а ет деш еветь
  4. 4. Определение ● Grid — а что это вообще такое? ● Машины действующие совместно для решения одной задачи ● А In-Memory Data Grid ● Данные в памяти надежно хранятся ● Всегда доступны и консистентны ● Network Attached Memory
  5. 5. ● Ассоциативный массив ● Данные делятся на разделы/партиции ● Партиция реплицируются на несколько узлов
  6. 6. Динамический кластер ● ПО Grid-а автоматически управляет узлами ● Большое число партиций ● Появление нового узла ● Перемещаем часть партиций на новый узел ● Выход узла из системы ● Переводим backup-ы в master-а ● Формируем backup-ы на живых узлах ● М о ж ем им ен ять ра з м ер к л а с тера во врем я ра бо ты
  7. 7. Кеширование базы данных ● Когда ● Есть паттерн доступа в кеш ● Высокая плотность записи ● Что ● Read Through/Write behind ● Вытеснение и обновление ● З а про с ы н е кон с и с тен тн ы с кеш ем и н а груж а ю т Б Д
  8. 8. Все свое ношу с собой ● Когда: безкомпромисный read/write; 20/80 ● Что ● Загружаем все данные в грид ● Запросы в грид, подписываемся на события ● Сеть — узкое место ● Параллельная обработка внутри узлов грида ● Near Cache
  9. 9. Когда использовать ● Скорость чтения/записи критична ● Запросы к данным постоянны ● Ваши данные влазят в 1ТБ ● Вы выжали из дисковой подсистемы все что можно ● Вам нужно горизонтально масштабироваться в онлайне, например на public cloud
  10. 10. Когда использовать ● НО ● Объем данных в памяти и в БД отличается в разы ● Разработка и администрирование распределенной системы это не шутка ● Сеть: критическая точка – Распределенный запросы плохо масштабируются. – Стрельба дробью — тоже.
  11. 11. Дизайн данных ● Самый быстрый доступ по главному ключу ● Помещайте родственные данные в одну партицию ● Их можно обрабатывать совместно прямо на узле грида ● Сетевой запрос будет обрабатывать только 1 узел ● Балансируйте размер объектов в кеше ● Маленькие объекты — много сетевых обращений ● Большие объекты — избыточный трафик
  12. 12. Дизайн: Ускорение доступа ● Используйте денормализацию данных ● Некоторые данные можно дублировать в нескольких местах ● Подсчитайте часто используемые агрегаты заранее ● Минимизируйте обращения по сети ● Используйте индексы ● IMDG предоставляет индексы для поиска по полям объектов ● Создавайте свои собственные индексы ● Тра н з а кци и — КВ И Н ТЭ С С Е Н Ц И Я З Л А
  13. 13. Транзакций ● IMDG — распределенная система: мы должны использовать 2PC ● Уже на 8 узлах скорость падает на 2 порядка ● Существуют сценарии нарушения целостности ● В большинстве систем транзакциями можно пожертвовать ● Либо использовать цепочки идемпотентных операции
  14. 14. Перевод денег: шаг 1 ● Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма, статус:начат) ● Считать счет 1 и проверить, что order_id еще к нему не применялся ● Обновить счет 1, списав деньги и добавив order_id в список примененных операций ● Обновить статус order_id на списано
  15. 15. Перевод денег: шаг 2 ● Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма, статус:списано) ● Считать счет 2 и проверить, что order_id еще к нему не применялся ● Обновить счет 2, начислив деньги и добавив order_id в список примененных операций ● Обновить статус order_id на начисленно
  16. 16. Перевод денег: завершение ● Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма, статус:начисленно) ● Считать счет 1 и удалить ссылку на order_id ● Считать счет 2 и удалить ссылку на order_id ● Обновить статус order_id на обработан ● Транзакция завершена
  17. 17. Oracle Gigaspaces GemFire Hazelcast Terracotta Coherence Координация P2P Центр. P2P P2P P2P Запросы Фильтрация SQL ODQL Фильтрация Нет Лицензия Commercial Com./Free Commercial Free Free Near Cache Да Да Да Нет Да Выполнение Да Да Да Нет Нет* Платформа Java/C/.Net Java/C/.Net Java Java Java Scale-out Да Нет Да Да Нет*
  18. 18. Заключение ● П ри пом ощ и I M D G вы м о ж ете ● Радикально уменьшить нагрузку на БД и время отклика ● Горизонтально масштабироваться во время выполнения (например на public cloud) ● Вести параллельную обработку данных на кластере ● Обрабатывать данные в реальном времени ● Обрабатывать тысячи транзакций в секунду ● С дел а ть н ево з м ож н о е во з м о ж н ы м !
  19. 19. Материалы ● http://blog.griddynamics.com/ ● Сайты вендоров, особенно форумы поддержки ● InfoQ: http://www.infoq.com/ ● Cameron Purdy, /dev/null blog: http://www.jroller.com/cpurdy/ ● Nati Shalom: http://natishalom.typepad.com/ ● Brian Oliver: http://brianoliver.wordpress.com/ ● http://www.highscalability.com/
  20. 20. Вопросы ?
  21. 21. Спасибо Alexey Kharlamov Development Manager Grid Dynamics, 2009

×