Your SlideShare is downloading. ×
0
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
High Load 2009   Imdg Presentation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

High Load 2009 Imdg Presentation

1,426

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,426
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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/
  • 20. Вопросы ?
  • 21. Спасибо Alexey Kharlamov Development Manager Grid Dynamics, 2009

×