Вертикальное игоризонтальноемасштабированиеJava приложенийVertical&Horisontal scalingin Java
Дмитрий ЛазаренкоБолее 8 лет опыта разработкина языке JavaРуководитель интеграционногонаправления Jelastic, основноенаправ...
PaaS• Глобальная автоматизация• Простота управленияприложениями• Масштабирование приложенияв зависимости от нагрузки• Цело...
Jelastic– платформа облачногохостинга следующегопоколения, позволяющаязапускать и масштабироватьЛЮБЫЕ Java & PHP приложени...
Разработчики любят создавать приложения и ненавидят обслуживатьсервера10:15 Установка ОС11:20 Конфигурирование системы12:0...
10:15 Выбрать тип и размер сервера10:17 Выбрать доменное имя10:20 Загрузить приложение10:25 Запустить!!!~ 10 минутТа же ис...
Проблемы высоконагруженных приложений• Высокое время отклика• Низкая пропускная способность• Высокая ресурсоемкость• Высок...
МасштабированиеВозможность системы увеличивать своюпроизводительность при увеличенииколичества выделяемых ей ресурсов10
Особенности вертикальногомасштабирования в Java• Физическое потребление памяти JVM можеттолько увеличиваться• Освободившая...
Чего хочется добитьсяЧтобы java-приложение могло какзабирать память, так и отдавать ееобратно в ОС12
AZUL ZING• Низкие задержки GC• Возможность масштабирования однойJVM до 500 GB Heap• Поддержка вертикальногомасштабирования...
Вертикальное масштабирование в Jelastic• Результат 6 месяцев исследований• Обеспечивается автоматическое вертикальногомасш...
Вертикальное масштабирование в Jelastic15
Вертикальное масштабирование в Jelastic16
Проблемы вертикальногомасштабирования в облаке• Гипервизор резервирует память, хотяприложение может ее и не использовать• ...
Контейнеры• Parallels Virtuozzo Containers – виртуализация на уровнеОС• Самые низкие накладные расходы на виртуализацию• В...
Умная живая миграция
Горизонтальное масштабированиеРост производительности приложения придобавлении ещё одного узла.• Дает возможность обойти п...
Проблемы горизонтальногомасштабирования• Единые точки отказа (SPoF )• Балансировка нагрузки(LB)• Обеспечение высокой досту...
Единые точки отказа22
Балансировка нагрузкиВиды• Http балансировка• Tcp балансировкаАлгоритмы• Round-Robin• Sticky balancingРеализацияHardware:S...
HA for Http level• Реплицируются хотя бы на 1 сервер все http-сессии (вместе с атрибутами)• Реализация часто использует tc...
Репликация http-сессий в GlassFish25
Репликация http-сессий в Jelastic26
Межпроцессная координацияПроблема:Координация процессов в разных JVMРешение:– ZooKeeper– Terracotta– Hazelcast– JGroups27
Кэширование и горизонтальноемасштабированиеПроблема:Возможна рассинхронизация локальногокэшаРешение: Распределенное кэширо...
Map Reduce• Hadoop• GridGain• Hadoop MapReduce – медленно• GridGain + Hadoop HDFS – быстро29
Общий доступ к файлам• NFS• GlusterFS• Ceph• Amazon S3• Hadoop HDFS• Openstack Swift30
Сложности масштабирования вручную• Много сетевых настроек• Много рутинных операций при добавлениинового узла• Постоянная з...
Что дает Jelastic для горизонтальногомасштабирования• Хитрые алгоритмы:– Алгоритм равномерного размазывания контейнероводн...
Упрощение масштабированияприложений в Jelastic• Быстрое и гибкое создание кластерапроизвольного размера• Адаптивное горизо...
Масштабирование в Jelastic -Ближайшие планы• Terracotta• High Availability out of box support forMySql, PostgreSQL, MongoD...
С Jelastic масштабироватьприложения прощеДмитрий Лазаренкоdl@jelastic.comwww.jelastic.com
Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java
Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java
Upcoming SlideShare
Loading in …5
×

Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java

1,601 views

Published on

Презентация содержит информацию о том, как надо проектировать приложения, чтобы они могли выдержать свалившуюся на них славу и неожиданный поток клиентов. Показаны приемы вертикального и горизонтального масштабирования, преимущества и недостатки каждого подхода, узкие места и потенциальные проблемы. В том числе приведены примеры практической реализации обоих видов масштабирования в единственной облачной платформе хостинга Java в России — Jelastic

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,601
On SlideShare
0
From Embeds
0
Number of Embeds
658
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java

  1. 1. Вертикальное игоризонтальноемасштабированиеJava приложенийVertical&Horisontal scalingin Java
  2. 2. Дмитрий ЛазаренкоБолее 8 лет опыта разработкина языке JavaРуководитель интеграционногонаправления Jelastic, основноенаправление деятельности –предоставление облачногохостинга для новых и ужесуществующих Java и PHPприложений2
  3. 3. PaaS• Глобальная автоматизация• Простота управленияприложениями• Масштабирование приложенияв зависимости от нагрузки• Целостность и безопасностьданных приложенияPaaS значительно снижаетзатраты времени и денег наобслуживание
  4. 4. Jelastic– платформа облачногохостинга следующегопоколения, позволяющаязапускать и масштабироватьЛЮБЫЕ Java & PHP приложениябез необходимостимодифицировать их исходный код
  5. 5. Разработчики любят создавать приложения и ненавидят обслуживатьсервера10:15 Установка ОС11:20 Конфигурирование системы12:05 Перерыв на кофе13:05 Настройка безопасности14:15 Конфигурация web сервера15:40 Конфигурация базы данных16:20 Пару бутербродов16:50 Конфигурация брандмауэра17:20 Разворачивание приложения17:45 Звонок жене и извинения о позднем возращениидомой18:00 Определение зависимостей библиотек20:30 Обновление пакетов22:15 Исправление неисправных зависимостей23:50 Пару банок Red Bull1:30 Запуск!!!~ 16 часов ~ 2 дняОдна история из жизни разработчикаПример из жизни2:05 ночи Окончание рабочего дня
  6. 6. 10:15 Выбрать тип и размер сервера10:17 Выбрать доменное имя10:20 Загрузить приложение10:25 Запустить!!!~ 10 минутТа же история с использованием Jelastic• Легко• Быстро• Удобно• Экономия времени и денег10 минут vs 2 дня = $$$$$$
  7. 7. Проблемы высоконагруженных приложений• Высокое время отклика• Низкая пропускная способность• Высокая ресурсоемкость• Высоковероятный выход из строя узловсистемы• Часто производительность упирается вжелезо9
  8. 8. МасштабированиеВозможность системы увеличивать своюпроизводительность при увеличенииколичества выделяемых ей ресурсов10
  9. 9. Особенности вертикальногомасштабирования в Java• Физическое потребление памяти JVM можеттолько увеличиваться• Освободившаяся после работы GC память неотдается обратно в операционную систему• Разные GC по разному работают с большимобъемом памяти• Большие паузы на больших объемах Heap• Возможны утечки памяти11
  10. 10. Чего хочется добитьсяЧтобы java-приложение могло какзабирать память, так и отдавать ееобратно в ОС12
  11. 11. AZUL ZING• Низкие задержки GC• Возможность масштабирования однойJVM до 500 GB Heap• Поддержка вертикальногомасштабирования вверх и вниз• Только коммерческая лицензия13
  12. 12. Вертикальное масштабирование в Jelastic• Результат 6 месяцев исследований• Обеспечивается автоматическое вертикальногомасштабирования вверх и вниз для Javaприложений• Работает в G1 и Serial GC• Абсолютно прозрачно и выгодно дляпользователя14
  13. 13. Вертикальное масштабирование в Jelastic15
  14. 14. Вертикальное масштабирование в Jelastic16
  15. 15. Проблемы вертикальногомасштабирования в облаке• Гипервизор резервирует память, хотяприложение может ее и не использовать• Деление процессорного времени (KVM, XEN)• Быстрый рост потребления ресурсов одним изприложений• Достижение предела вертикальногомасштабирования–performance упирается ввозможности железа17
  16. 16. Контейнеры• Parallels Virtuozzo Containers – виртуализация на уровнеОС• Самые низкие накладные расходы на виртуализацию• Возможность вертикального масштабирования, MemoryOvercelling• Пользователь не платит за потребление памяти ипроцессора ядра ВМ• Гибкие настройки потребления ресурсов• Оптимальная утилизация дискового пространства• Живая миграция18
  17. 17. Умная живая миграция
  18. 18. Горизонтальное масштабированиеРост производительности приложения придобавлении ещё одного узла.• Дает возможность обойти пределывертикального масштабирования• Увеличивает скорость работы программы за счетраспределения по разным физическиммашинам20
  19. 19. Проблемы горизонтальногомасштабирования• Единые точки отказа (SPoF )• Балансировка нагрузки(LB)• Обеспечение высокой доступности (HA)• Синхронизация кэша• Общий доступ к файловым данным• Межпроцессная координация• Усложнение логики приложения21
  20. 20. Единые точки отказа22
  21. 21. Балансировка нагрузкиВиды• Http балансировка• Tcp балансировкаАлгоритмы• Round-Robin• Sticky balancingРеализацияHardware:Software: Apache, Nginx, HAProxy23
  22. 22. HA for Http level• Реплицируются хотя бы на 1 сервер все http-сессии (вместе с атрибутами)• Реализация часто использует tcp multicasting• Много паразитного траффика и перерасходпамяти• Можно использовать СУБД либо сервер-кэширования• Некоторые J2EE сервера используют умнуюрепликацию24
  23. 23. Репликация http-сессий в GlassFish25
  24. 24. Репликация http-сессий в Jelastic26
  25. 25. Межпроцессная координацияПроблема:Координация процессов в разных JVMРешение:– ZooKeeper– Terracotta– Hazelcast– JGroups27
  26. 26. Кэширование и горизонтальноемасштабированиеПроблема:Возможна рассинхронизация локальногокэшаРешение: Распределенное кэширование– Oracle Coherence– IBM Extreme Scale– JBoss Infinispan– Terracotta– Hazelcast– Memcached28
  27. 27. Map Reduce• Hadoop• GridGain• Hadoop MapReduce – медленно• GridGain + Hadoop HDFS – быстро29
  28. 28. Общий доступ к файлам• NFS• GlusterFS• Ceph• Amazon S3• Hadoop HDFS• Openstack Swift30
  29. 29. Сложности масштабирования вручную• Много сетевых настроек• Много рутинных операций при добавлениинового узла• Постоянная забота о существовании единыхточек отказа• Отсутствие средств централизованногомониторинга• Высокая вероятность что-нибудь забыть31
  30. 30. Что дает Jelastic для горизонтальногомасштабирования• Хитрые алгоритмы:– Алгоритм равномерного размазывания контейнероводного окружения– Алгоритм распределения новых контейнеров пофизическим машинам с учетом комплексногопоказателя загрузки• Обеспечение отсутствия SPoF на слоеприложения• Стараемся избавиться от SPoF на слое данных ибалансировке32
  31. 31. Упрощение масштабированияприложений в Jelastic• Быстрое и гибкое создание кластерапроизвольного размера• Адаптивное горизонтальное ивертикальноемасштабирование, поддержка HA дляGlassFish, Tomcat, Jetty• Удобные средства мониторинга33
  32. 32. Масштабирование в Jelastic -Ближайшие планы• Terracotta• High Availability out of box support forMySql, PostgreSQL, MongoDB• Distributed File Storage34
  33. 33. С Jelastic масштабироватьприложения прощеДмитрий Лазаренкоdl@jelastic.comwww.jelastic.com

×