SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
In Memory Data Grids


Alexey Kharlamov
Development Manager
Grid Dynamics, 2009
О этот новый мир
     ●Web 2.0: AJAX и стремление к высокой
     интерактивности
     ●   Экспоненциальный рост трафика
     ●   Закон Мура умирает
         ●   Рост степени интеграции
             замедляется
         ●   Увеличение плотности упаковки не
             ведет к росту производительности
     •
         Ж ел ез о про дол ж а ет деш еветь
Что же делать?
●
    Расти вширь — использовать параллельную обработку (scale
    out)
●
    Гауссовское распределение — наш спаситель!
    ●
        Мы можем делать только 20% работы и получать 80%
        заработной платы
●
    Использовать принцип пули
    ●
        Сделать работу заранее и сохранить ее в памяти
●
    П а м ять продо л ж а ет деш еветь
Определение
  ●
      Grid — а что это вообще такое?
      ●
          Машины действующие совместно
          для решения одной задачи
  ●
      А In-Memory Data Grid
      ●
          Данные в памяти надежно хранятся
      ●
          Всегда доступны и консистентны
  ●
      Network Attached Memory
●
    Ассоциативный массив
●
    Данные делятся на
    разделы/партиции
●
    Партиция реплицируются
    на несколько узлов
Динамический кластер
●
    ПО Grid-а автоматически управляет узлами
●
    Большое число партиций
●
    Появление нового узла
    ●
        Перемещаем часть партиций на новый узел
●
    Выход узла из системы
    ●
        Переводим backup-ы в master-а
    ●
        Формируем backup-ы на живых узлах
●
    М о ж ем им ен ять ра з м ер к л а с тера во врем я ра бо ты
Кеширование базы данных
      ●
          Когда
          ●
              Есть паттерн доступа в кеш
          ●
              Высокая плотность записи
      ●
          Что
          ●
              Read Through/Write behind
          ●
              Вытеснение и обновление
      ●
          З а про с ы н е кон с и с тен тн ы с кеш ем
          и н а груж а ю т Б Д
Все свое ношу с собой
     ●
         Когда: безкомпромисный read/write; 20/80
     ●
         Что
         ●
             Загружаем все данные в грид
         ●
             Запросы в грид, подписываемся на
             события
     ●
         Сеть — узкое место
         ●
             Параллельная обработка внутри
             узлов грида
         ●
             Near Cache
Когда использовать
●
    Скорость чтения/записи критична
●
    Запросы к данным постоянны
●
    Ваши данные влазят в 1ТБ
●
    Вы выжали из дисковой подсистемы все что можно
●
    Вам нужно горизонтально масштабироваться в онлайне,
    например на public cloud
Когда использовать
●
    НО
    ●
         Объем данных в памяти и в БД отличается в разы
    ●
         Разработка и администрирование распределенной системы
         это не шутка
    ●
         Сеть: критическая точка
          –   Распределенный запросы плохо масштабируются.
          –   Стрельба дробью — тоже.
Дизайн данных
●
    Самый быстрый доступ по главному ключу
●
    Помещайте родственные данные в одну партицию
    ●
        Их можно обрабатывать совместно прямо на узле грида
    ●
        Сетевой запрос будет обрабатывать только 1 узел
●
    Балансируйте размер объектов в кеше
    ●
        Маленькие объекты — много сетевых обращений
    ●
        Большие объекты — избыточный трафик
Дизайн: Ускорение доступа
●
    Используйте денормализацию данных
    ●
        Некоторые данные можно дублировать в нескольких местах
    ●
        Подсчитайте часто используемые агрегаты заранее
●
    Минимизируйте обращения по сети
●
    Используйте индексы
    ●
        IMDG предоставляет индексы для поиска по полям объектов
    ●
        Создавайте свои собственные индексы
●
    Тра н з а кци и — КВ И Н ТЭ С С Е Н Ц И Я З Л А
Транзакций
●
    IMDG — распределенная система: мы должны
    использовать 2PC
    ●
        Уже на 8 узлах скорость падает на 2 порядка
    ●
        Существуют сценарии нарушения
        целостности
●
    В большинстве систем транзакциями можно
    пожертвовать
●
    Либо использовать цепочки идемпотентных
    операции
Перевод денег: шаг 1
●
    Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма,
    статус:начат)
●
    Считать счет 1 и проверить, что order_id еще к нему не
    применялся
●
    Обновить счет 1, списав деньги и добавив order_id в список
    примененных операций
●
    Обновить статус order_id на списано
Перевод денег: шаг 2
●
    Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма,
    статус:списано)
●
    Считать счет 2 и проверить, что order_id еще к нему не
    применялся
●
    Обновить счет 2, начислив деньги и добавив order_id в список
    примененных операций
●
    Обновить статус order_id на начисленно
Перевод денег: завершение
●
    Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма,
    статус:начисленно)
●
    Считать счет 1 и удалить ссылку на order_id
●
    Считать счет 2 и удалить ссылку на order_id
●
    Обновить статус order_id на обработан
●
    Транзакция завершена
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        Да           Нет           Да            Да         Нет*
Заключение
●
    П ри пом ощ и I M D G вы м о ж ете
    ●
        Радикально уменьшить нагрузку на БД и время отклика
    ●
        Горизонтально масштабироваться во время выполнения
        (например на public cloud)
    ●
        Вести параллельную обработку данных на кластере
    ●
        Обрабатывать данные в реальном времени
    ●
        Обрабатывать тысячи транзакций в секунду
    ●
        С дел а ть н ево з м ож н о е во з м о ж н ы м !
Материалы
●
    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/
Вопросы ?
Спасибо

Alexey Kharlamov
Development Manager
Grid Dynamics, 2009

Contenu connexe

Tendances

Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Ontico
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Ontico
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Ontico
 
apache cassandra и подруга её scylla
apache cassandra и подруга её scyllaapache cassandra и подруга её scylla
apache cassandra и подруга её scyllaDaniel Podolsky
 
Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»DataArt
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...Ontico
 
maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014Maxim Dementyev
 
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...Yandex
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...Ontico
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцMikhail Tabunov
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Ontico
 
Аналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениАналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениCodeFest
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)Ontico
 

Tendances (20)

Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
apache cassandra и подруга её scylla
apache cassandra и подруга её scyllaapache cassandra и подруга её scylla
apache cassandra и подруга её scylla
 
Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»Александр Богданов «Lambda - архитектура»
Александр Богданов «Lambda - архитектура»
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014
 
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
Архитектура бесконечного хранилища для пользовательского контента — Артём Сок...
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 
Аналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времениАналитика над петабайтами в реальном времени
Аналитика над петабайтами в реальном времени
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 

En vedette

Технология и бизнес-модель сетей CDN
Технология и бизнес-модель сетей CDNТехнология и бизнес-модель сетей CDN
Технология и бизнес-модель сетей CDNwintertime
 
Highload Perf Tuning
Highload Perf TuningHighload Perf Tuning
Highload Perf TuningHighLoad2009
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHighLoad2009
 
архитектура новой почты рамблера
архитектура новой почты рамблераархитектура новой почты рамблера
архитектура новой почты рамблераHighLoad2009
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4HighLoad2009
 
Hl09 P2p Ever Mesh Pantyukhin
Hl09 P2p Ever Mesh PantyukhinHl09 P2p Ever Mesh Pantyukhin
Hl09 P2p Ever Mesh PantyukhinHighLoad2009
 
температура мира
температура миратемпература мира
температура мираHighLoad2009
 
Dash Profiler 200910
Dash Profiler 200910Dash Profiler 200910
Dash Profiler 200910HighLoad2009
 

En vedette (20)

Take2
Take2Take2
Take2
 
Ddos
DdosDdos
Ddos
 
Highload 2009
Highload 2009Highload 2009
Highload 2009
 
Silverspoon2
Silverspoon2Silverspoon2
Silverspoon2
 
Технология и бизнес-модель сетей CDN
Технология и бизнес-модель сетей CDNТехнология и бизнес-модель сетей CDN
Технология и бизнес-модель сетей CDN
 
Highload Perf Tuning
Highload Perf TuningHighload Perf Tuning
Highload Perf Tuning
 
Scalaxy
ScalaxyScalaxy
Scalaxy
 
Why02
Why02Why02
Why02
 
Hl2009 Pr V2
Hl2009 Pr V2Hl2009 Pr V2
Hl2009 Pr V2
 
High Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus ReadyHigh Load 2009 Dimaa Rus Ready
High Load 2009 Dimaa Rus Ready
 
архитектура новой почты рамблера
архитектура новой почты рамблераархитектура новой почты рамблера
архитектура новой почты рамблера
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4
 
Hl09 P2p Ever Mesh Pantyukhin
Hl09 P2p Ever Mesh PantyukhinHl09 P2p Ever Mesh Pantyukhin
Hl09 P2p Ever Mesh Pantyukhin
 
температура мира
температура миратемпература мира
температура мира
 
Hh Ucoz
Hh UcozHh Ucoz
Hh Ucoz
 
Kosmodemiansky
KosmodemianskyKosmodemiansky
Kosmodemiansky
 
бегун
бегунбегун
бегун
 
Dash Profiler 200910
Dash Profiler 200910Dash Profiler 200910
Dash Profiler 200910
 
Nyt Prof 200910
Nyt Prof 200910Nyt Prof 200910
Nyt Prof 200910
 
Rac
RacRac
Rac
 

Similaire à High Load 2009 Imdg Presentation

специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)Ontico
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Alexey Lesovsky
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) АксеновAlex Chistyakov
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptFDConf
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеAlex Chistyakov
 
Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...SQALab
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаITCrowd Almaty
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеBadoo Development
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеYulia Kotova
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Ontico
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляютсяMax Lapshin
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущегоAlex Chistyakov
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
GCP для работы с большими данными
GCP для работы с большими даннымиGCP для работы с большими данными
GCP для работы с большими даннымиHOWWEDOIT
 
Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Олег Чебулаев
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийFuenteovejuna
 

Similaire à High Load 2009 Imdg Presentation (20)

специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
 
Build your own multistack JS startup
Build your own multistack JS startupBuild your own multistack JS startup
Build your own multistack JS startup
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в Минске
 
Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляются
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
GCP для работы с большими данными
GCP для работы с большими даннымиGCP для работы с большими данными
GCP для работы с большими данными
 
Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
 

Plus de HighLoad2009

Eremkin Cboss Smsc Hl2009
Eremkin Cboss Smsc Hl2009Eremkin Cboss Smsc Hl2009
Eremkin Cboss Smsc Hl2009HighLoad2009
 
Hl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev PochtaHl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev PochtaHighLoad2009
 
особенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной средеособенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной средеHighLoad2009
 
High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9HighLoad2009
 
м.токовинин компромиссная производительность
м.токовинин   компромиссная производительностьм.токовинин   компромиссная производительность
м.токовинин компромиссная производительностьHighLoad2009
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted PythonHighLoad2009
 
Silverspoon Cluster
Silverspoon ClusterSilverspoon Cluster
Silverspoon ClusterHighLoad2009
 

Plus de HighLoad2009 (15)

Krizhanovsky Vm
Krizhanovsky VmKrizhanovsky Vm
Krizhanovsky Vm
 
Eremkin Cboss Smsc Hl2009
Eremkin Cboss Smsc Hl2009Eremkin Cboss Smsc Hl2009
Eremkin Cboss Smsc Hl2009
 
Hl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev PochtaHl++2009 Ayakovlev Pochta
Hl++2009 Ayakovlev Pochta
 
Quick Wins
Quick WinsQuick Wins
Quick Wins
 
Hl2009 1c Bitrix
Hl2009 1c BitrixHl2009 1c Bitrix
Hl2009 1c Bitrix
 
Php Daemon
Php DaemonPhp Daemon
Php Daemon
 
Highload2009
Highload2009Highload2009
Highload2009
 
особенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной средеособенности использования Times Ten In Memory Database в высоконагруженной среде
особенности использования Times Ten In Memory Database в высоконагруженной среде
 
Hl Nekoval
Hl NekovalHl Nekoval
Hl Nekoval
 
High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9
 
Pl High Load V1.1
Pl High Load V1.1Pl High Load V1.1
Pl High Load V1.1
 
м.токовинин компромиссная производительность
м.токовинин   компромиссная производительностьм.токовинин   компромиссная производительность
м.токовинин компромиссная производительность
 
бегун
бегунбегун
бегун
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
Silverspoon Cluster
Silverspoon ClusterSilverspoon Cluster
Silverspoon Cluster
 

High Load 2009 Imdg Presentation

  • 1. In Memory Data Grids Alexey Kharlamov Development Manager Grid Dynamics, 2009
  • 2. О этот новый мир ●Web 2.0: AJAX и стремление к высокой интерактивности ● Экспоненциальный рост трафика ● Закон Мура умирает ● Рост степени интеграции замедляется ● Увеличение плотности упаковки не ведет к росту производительности • Ж ел ез о про дол ж а ет деш еветь
  • 3. Что же делать? ● Расти вширь — использовать параллельную обработку (scale out) ● Гауссовское распределение — наш спаситель! ● Мы можем делать только 20% работы и получать 80% заработной платы ● Использовать принцип пули ● Сделать работу заранее и сохранить ее в памяти ● П а м ять продо л ж а ет деш еветь
  • 4. Определение ● Grid — а что это вообще такое? ● Машины действующие совместно для решения одной задачи ● А In-Memory Data Grid ● Данные в памяти надежно хранятся ● Всегда доступны и консистентны ● Network Attached Memory
  • 5. Ассоциативный массив ● Данные делятся на разделы/партиции ● Партиция реплицируются на несколько узлов
  • 6. Динамический кластер ● ПО Grid-а автоматически управляет узлами ● Большое число партиций ● Появление нового узла ● Перемещаем часть партиций на новый узел ● Выход узла из системы ● Переводим backup-ы в master-а ● Формируем backup-ы на живых узлах ● М о ж ем им ен ять ра з м ер к л а с тера во врем я ра бо ты
  • 7. Кеширование базы данных ● Когда ● Есть паттерн доступа в кеш ● Высокая плотность записи ● Что ● Read Through/Write behind ● Вытеснение и обновление ● З а про с ы н е кон с и с тен тн ы с кеш ем и н а груж а ю т Б Д
  • 8. Все свое ношу с собой ● Когда: безкомпромисный read/write; 20/80 ● Что ● Загружаем все данные в грид ● Запросы в грид, подписываемся на события ● Сеть — узкое место ● Параллельная обработка внутри узлов грида ● Near Cache
  • 9. Когда использовать ● Скорость чтения/записи критична ● Запросы к данным постоянны ● Ваши данные влазят в 1ТБ ● Вы выжали из дисковой подсистемы все что можно ● Вам нужно горизонтально масштабироваться в онлайне, например на public cloud
  • 10. Когда использовать ● НО ● Объем данных в памяти и в БД отличается в разы ● Разработка и администрирование распределенной системы это не шутка ● Сеть: критическая точка – Распределенный запросы плохо масштабируются. – Стрельба дробью — тоже.
  • 11. Дизайн данных ● Самый быстрый доступ по главному ключу ● Помещайте родственные данные в одну партицию ● Их можно обрабатывать совместно прямо на узле грида ● Сетевой запрос будет обрабатывать только 1 узел ● Балансируйте размер объектов в кеше ● Маленькие объекты — много сетевых обращений ● Большие объекты — избыточный трафик
  • 12. Дизайн: Ускорение доступа ● Используйте денормализацию данных ● Некоторые данные можно дублировать в нескольких местах ● Подсчитайте часто используемые агрегаты заранее ● Минимизируйте обращения по сети ● Используйте индексы ● IMDG предоставляет индексы для поиска по полям объектов ● Создавайте свои собственные индексы ● Тра н з а кци и — КВ И Н ТЭ С С Е Н Ц И Я З Л А
  • 13. Транзакций ● IMDG — распределенная система: мы должны использовать 2PC ● Уже на 8 узлах скорость падает на 2 порядка ● Существуют сценарии нарушения целостности ● В большинстве систем транзакциями можно пожертвовать ● Либо использовать цепочки идемпотентных операции
  • 14. Перевод денег: шаг 1 ● Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма, статус:начат) ● Считать счет 1 и проверить, что order_id еще к нему не применялся ● Обновить счет 1, списав деньги и добавив order_id в список примененных операций ● Обновить статус order_id на списано
  • 15. Перевод денег: шаг 2 ● Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма, статус:списано) ● Считать счет 2 и проверить, что order_id еще к нему не применялся ● Обновить счет 2, начислив деньги и добавив order_id в список примененных операций ● Обновить статус order_id на начисленно
  • 16. Перевод денег: завершение ● Считать ордер на перевод денег (order_id, счет 1, счет 2, сумма, статус:начисленно) ● Считать счет 1 и удалить ссылку на order_id ● Считать счет 2 и удалить ссылку на order_id ● Обновить статус order_id на обработан ● Транзакция завершена
  • 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. Заключение ● П ри пом ощ и I M D G вы м о ж ете ● Радикально уменьшить нагрузку на БД и время отклика ● Горизонтально масштабироваться во время выполнения (например на public cloud) ● Вести параллельную обработку данных на кластере ● Обрабатывать данные в реальном времени ● Обрабатывать тысячи транзакций в секунду ● С дел а ть н ево з м ож н о е во з м о ж н ы м !
  • 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/