210 likes | 355 Views
PBC204. ABBYY. Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure. Иван Бодягин. Код сессии. Компания. Имя Фамилия. Компания. Название сессии. Имя Фамилия. Содержание. Облачные сервисы, преимущества PaaS Архитектура FineReader Online
E N D
PBC204 ABBYY Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure Иван Бодягин
Код сессии Компания Имя Фамилия Компания Название сессии Имя Фамилия
Содержание • Облачные сервисы, преимущества PaaS • Архитектура FineReader Online • Практика использования • Очереди • Таблицы • Хранилища • Развертывание • Масштабирование
Облачные сервисы • Возможность масштабирования в зависимости от нагрузки • Экономия на обслуживании оборудования • Возможность быть ближе к пользователю • Размещение сервисов в датацентрах по всему миру • Безопасность • Пользователи доверяют Microsoft сохранность своих данных
PaaSvsIaaS • IaaSпозволяет не изменив ни строчки кода сделать сервис «облачным» • Но это иллюзия =) • PaaSпровоцирует разрабатывать масштабируемую и надежную архитектуру
Архитектура Blob Storage Abbyy.Online API SQL Azure Worker Role Web Role Queue
Отказоустойчивость • Минимум два экземпляра каждой роли • По одному процессу распознавания на ядро. • Периодический опрос процессов • При исключении, отсутствии ответа, превышении времени обработки задания процесс убивается. Задание возвращается в очередь
Масштабируемость • Процессы обработки заданий поднимаются динамически, если есть необходимость • Задачам можно назначать приоритеты • Комплект из WebRole + WorkerRoleразвернут в нескольких географических регионах • Обработчики из одного региона могут брать задания из других регионов, если кто-то не справляется
Autoscale Application Block - WASABi • Два типа правил • Constraint • Работают на основе временных границ • Помогают держать в рамках бюджет • Имеют ранги для определения победителя, если времена пересекаются • Reactive • Динамически подстраивают число «инстансов» или выполняют другие действия руководствуясь указанными предусловиями • Предусловия формируются из счетчиков или произвольных бизнес-метрик • Помогают динамически подстраиваться вашему приложению под текущую нагрузку
WASABi • Брьба с «осцилированием» - «Yo-yo»проблема • Разные условия для поднимания и выключения дополнительных инстансов • Не включать/выключать дополнительные инстансы на границе часа • Ограничивать «масштабы масштабирования»
Облачный сервис распознавания Демонстрация
Детали реализации • IPlatformQueue • AzureQueue – реализация очереди для Azure • IPlatformBlobStorage • AzureBlobStorage – реализация облачного хранилища • IPlatformData • AzureSqlData – реализация для SQL Azure • AzureTableData – реализация для AzureTable (успехом не увенчалась)
Особенности работы с очередями • Service Bus • Уведомления, приоритеты, выборка по фильтру, ... • Azure Queue • Минимальный функционал • Нельзя изменить время обработки сообщения • Максимальное время обработки 2 часа • Нет приоритетов • Нельзя фильтровать сообщения
Работа с таблицами • Только один индекс, состоящий из 2-х частей • Можно хранить только ограниченный набор типов • Нельзя использовать Enum • Не очень удачно реализована библиотека для взаимодействия • POCO объекты должны содержать определенные поля • Плохая диагностика • Нельзя использовать сортировку
Работа с SQL Azure и Blob Storage • SQL • Недостаток инструментария, относительно малый размер базы • BLOB • Возможность читать часть BLOB-а по смещению • Возможность создавать публичные ссылки с разными ограничениями
Развертывание • Если нужно развернуть несколько проектов или дополнительные сущности, то на них должна быть ссылка из основного проекта • Есть ограничения на размер пакета • Решение: • Все необходимые проекты и прочие сущности предварительно архивируются и выкладываются в BLOB Storage • При развертывании все извлекается из облачного хранилища, распаковывается и устанавливается
Итоги • Не смотря на недавний старт, Azure является достаточно взрослой платформой для развертывания отказоустойчивых и масштабируемых сервисов • PaaSподход в перспективе предпочтительнее • Azure активно развивается и с каждым релизом предоставляет новый интересный функционал • Service Bus, Azure Cache, Access Control, etc…
Вопросы • PBC204 • Иван Бодягин • ABBYY • Ivan_B@abbyy.com • Вы сможете задать вопросы докладчикам в зоне «Спроси эксперта» в течение часа после завершения этой сессии