Разработка высокомасштабируемых и отказоустойчивых...

21

Upload: upton-wong

Post on 02-Jan-2016

49 views

Category:

Documents


2 download

DESCRIPTION

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

TRANSCRIPT

PBC204

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

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

Код сессии

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

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

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

Содержание

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

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

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

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

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

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

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

PaaS vs IaaS

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

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

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

Архитектура

We

b R

ole

Wo

rke

r R

ole

Blob Storage

SQL Azure

Queue

Abbyy.Online

API

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

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

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

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

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

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

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

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

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

Autoscale Application Block - WASABi

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

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

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

WASABi

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

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

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

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

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

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

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

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

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

IPlatformDataAzureSqlData – реализация для SQL AzureAzureTableData – реализация для 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 Иван Бодягин

[email protected]

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