Top Banner
21

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

Jan 02, 2016

Download

Documents

upton-wong

PBC204. ABBYY. Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure. Иван Бодягин. Код сессии. Компания. Имя Фамилия. Компания. Название сессии. Имя Фамилия. Содержание. Облачные сервисы, преимущества PaaS Архитектура FineReader Online - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure
Page 2: Разработка высокомасштабируемых и отказоустойчивых приложений на Windows Azure

PBC204

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

Иван Бодягин ABBYY

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

Код сессии

Название сессии

Имя Фамилия Компания

Имя ФамилияКомпания

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

Содержание

Облачные сервисы, преимущества PaaSАрхитектура FineReader OnlineПрактика использования

ОчередиТаблицыХранилищаРазвертываниеМасштабирование

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

Облачные сервисы

Возможность масштабирования в зависимости от нагрузки

Экономия на обслуживании оборудования

Возможность быть ближе к пользователюРазмещение сервисов в датацентрах по всему миру

БезопасностьПользователи доверяют Microsoft сохранность своих данных

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

PaaS vs IaaS

IaaS позволяет не изменив ни строчки кода сделать сервис «облачным»

Но это иллюзия =)

PaaS провоцирует разрабатывать масштабируемую и надежную архитектуру

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

Архитектура

We

b R

ole

Wo

rke

r R

ole

Blob Storage

SQL Azure

Queue

Abbyy.Online

API

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

ОтказоустойчивостьМинимум два экземпляра каждой роли

По одному процессу распознавания на ядро.

Периодический опрос процессов

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

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

Масштабируемость

Процессы обработки заданий поднимаются динамически, если есть необходимость

Задачам можно назначать приоритеты

Комплект из WebRole + WorkerRole развернут в нескольких географических регионах

Обработчики из одного региона могут брать задания из других регионов, если кто-то не справляется

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

Autoscale Application Block - WASABi

Два типа правилConstraint

Работают на основе временных границПомогают держать в рамках бюджетИмеют ранги для определения победителя, если времена пересекаются

ReactiveДинамически подстраивают число «инстансов» или выполняют другие действия руководствуясь указанными предусловиямиПредусловия формируются из счетчиков или произвольных бизнес-метрикПомогают динамически подстраиваться вашему приложению под текущую нагрузку

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

WASABi

Брьба с «осцилированием» - «Yo-yo» проблемаРазные условия для поднимания и выключения дополнительных инстансов

Не включать/выключать дополнительные инстансы на границе часа

Ограничивать «масштабы масштабирования»

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

Демонстрация

Облачный сервис распознавания

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

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

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

Детали реализации

IPlatformQueueAzureQueue – реализация очереди для Azure

IPlatformBlobStorageAzureBlobStorage – реализация облачного хранилища

IPlatformDataAzureSqlData – реализация для SQL AzureAzureTableData – реализация для AzureTable (успехом не увенчалась)

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

Особенности работы с очередями

Service BusУведомления, приоритеты, выборка по фильтру, ...

Azure QueueМинимальный функционалНельзя изменить время обработки сообщенияМаксимальное время обработки 2 часаНет приоритетовНельзя фильтровать сообщения

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

Работа с таблицами

Только один индекс, состоящий из 2-х частейМожно хранить только ограниченный набор типов

Нельзя использовать Enum

Не очень удачно реализована библиотека для взаимодействия

POCO объекты должны содержать определенные поляПлохая диагностика

Нельзя использовать сортировку

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

Работа с SQL Azure и Blob Storage

SQLНедостаток инструментария, относительно малый размер базы

BLOBВозможность читать часть BLOB-а по смещениюВозможность создавать публичные ссылки с разными ограничениями

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

Развертывание

Если нужно развернуть несколько проектов или дополнительные сущности, то на них должна быть ссылка из основного проектаЕсть ограничения на размер пакета

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

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

Итоги

Не смотря на недавний старт, Azure является достаточно взрослой платформой для развертывания отказоустойчивых и масштабируемых сервисов

PaaS подход в перспективе предпочтительнее

Azure активно развивается и с каждым релизом предоставляет новый интересный функционал

Service Bus, Azure Cache, Access Control, etc…

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

Вопросы

PBC204 Иван Бодягин

[email protected]

Вы сможете задать вопросы докладчикам в зоне «Спроси эксперта» в течение часа после завершения этой сессии

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