1 / 21

Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure

PBC204. ABBYY. Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure. Иван Бодягин. Код сессии. Компания. Имя Фамилия. Компания. Название сессии. Имя Фамилия. Содержание. Облачные сервисы, преимущества PaaS Архитектура FineReader Online

upton-wong
Download Presentation

Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PBC204 ABBYY Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure Иван Бодягин

  2. Код сессии Компания Имя Фамилия Компания Название сессии Имя Фамилия

  3. Содержание • Облачные сервисы, преимущества PaaS • Архитектура FineReader Online • Практика использования • Очереди • Таблицы • Хранилища • Развертывание • Масштабирование

  4. Облачные сервисы • Возможность масштабирования в зависимости от нагрузки • Экономия на обслуживании оборудования • Возможность быть ближе к пользователю • Размещение сервисов в датацентрах по всему миру • Безопасность • Пользователи доверяют Microsoft сохранность своих данных

  5. PaaSvsIaaS • IaaSпозволяет не изменив ни строчки кода сделать сервис «облачным» • Но это иллюзия =) • PaaSпровоцирует разрабатывать масштабируемую и надежную архитектуру

  6. Архитектура Blob Storage Abbyy.Online API SQL Azure Worker Role Web Role Queue

  7. Отказоустойчивость • Минимум два экземпляра каждой роли • По одному процессу распознавания на ядро. • Периодический опрос процессов • При исключении, отсутствии ответа, превышении времени обработки задания процесс убивается. Задание возвращается в очередь

  8. Масштабируемость • Процессы обработки заданий поднимаются динамически, если есть необходимость • Задачам можно назначать приоритеты • Комплект из WebRole + WorkerRoleразвернут в нескольких географических регионах • Обработчики из одного региона могут брать задания из других регионов, если кто-то не справляется

  9. Autoscale Application Block - WASABi • Два типа правил • Constraint • Работают на основе временных границ • Помогают держать в рамках бюджет • Имеют ранги для определения победителя, если времена пересекаются • Reactive • Динамически подстраивают число «инстансов» или выполняют другие действия руководствуясь указанными предусловиями • Предусловия формируются из счетчиков или произвольных бизнес-метрик • Помогают динамически подстраиваться вашему приложению под текущую нагрузку

  10. WASABi • Брьба с «осцилированием» - «Yo-yo»проблема • Разные условия для поднимания и выключения дополнительных инстансов • Не включать/выключать дополнительные инстансы на границе часа • Ограничивать «масштабы масштабирования»

  11. Облачный сервис распознавания Демонстрация

  12. Опыт работы с Azure

  13. Детали реализации • IPlatformQueue • AzureQueue – реализация очереди для Azure • IPlatformBlobStorage • AzureBlobStorage – реализация облачного хранилища • IPlatformData • AzureSqlData – реализация для SQL Azure • AzureTableData – реализация для AzureTable (успехом не увенчалась)

  14. Особенности работы с очередями • Service Bus • Уведомления, приоритеты, выборка по фильтру, ... • Azure Queue • Минимальный функционал • Нельзя изменить время обработки сообщения • Максимальное время обработки 2 часа • Нет приоритетов • Нельзя фильтровать сообщения

  15. Работа с таблицами • Только один индекс, состоящий из 2-х частей • Можно хранить только ограниченный набор типов • Нельзя использовать Enum • Не очень удачно реализована библиотека для взаимодействия • POCO объекты должны содержать определенные поля • Плохая диагностика • Нельзя использовать сортировку

  16. Работа с SQL Azure и Blob Storage • SQL • Недостаток инструментария, относительно малый размер базы • BLOB • Возможность читать часть BLOB-а по смещению • Возможность создавать публичные ссылки с разными ограничениями

  17. Развертывание • Если нужно развернуть несколько проектов или дополнительные сущности, то на них должна быть ссылка из основного проекта • Есть ограничения на размер пакета • Решение: • Все необходимые проекты и прочие сущности предварительно архивируются и выкладываются в BLOB Storage • При развертывании все извлекается из облачного хранилища, распаковывается и устанавливается

  18. Итоги • Не смотря на недавний старт, Azure является достаточно взрослой платформой для развертывания отказоустойчивых и масштабируемых сервисов • PaaSподход в перспективе предпочтительнее • Azure активно развивается и с каждым релизом предоставляет новый интересный функционал • Service Bus, Azure Cache, Access Control, etc…

  19. Вопросы • PBC204 • Иван Бодягин • ABBYY • Ivan_B@abbyy.com • Вы сможете задать вопросы докладчикам в зоне «Спроси эксперта» в течение часа после завершения этой сессии

More Related