• Save
Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 873 views

Презентация содержит информацию о том, как надо проектировать приложения, чтобы они могли выдержать ...

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

Statistics

Views

Total Views
873
Views on SlideShare
523
Embed Views
350

Actions

Likes
2
Downloads
0
Comments
0

1 Embed 350

http://jeeconf.com 350

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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