+ All Categories
Home > Technology > Подходы облачного проектирования в Windows Azure

Подходы облачного проектирования в Windows Azure

Date post: 11-Nov-2014
Category:
Upload: gaidar-magdanurov
View: 1,541 times
Download: 2 times
Share this document with a friend
Description:
Расширенная версия моей презентации с TechEd Russia 10 ноября 2011 года. На слады добавлено много дополнительного текста, для того, чтобы презентацию можно было прочитать без моего участия.
Popular Tags:
45
Transcript
Page 1: Подходы облачного проектирования в Windows Azure
Page 2: Подходы облачного проектирования в Windows Azure

ARC208

Подходы облачного проектирования в Windows Azure

Гайдар МагдануровРуководитель направления веб-технологийMicrosoft

Page 3: Подходы облачного проектирования в Windows Azure

Содержание

Облачные платформыПредпосылки появления и возможности

Windows AzureКраткий обзор основных компонентов

Типовая архитектура … приложений в облаке

Важные моменты… при проектировании облачных приложений

Page 4: Подходы облачного проектирования в Windows Azure

Облачные платформы

Page 5: Подходы облачного проектирования в Windows Azure

Предпосылки появления облачных платформ

Рост нагрузки на частные дата-центрыУвеличение количества пользователейРаспространение мобильных решенийОдновременная совместная работаПовышение ожиданий от приложенийНепредсказуемые пики нагрузки

Высокие расходы на дата-центыРесурсы: электричество, охлаждение, сети, персоналПроблемы масштабирования: большие первоначальные инвестиции, необходимость платить «деньги вперед» за непредсказуемую нагрузку

Page 6: Подходы облачного проектирования в Windows Azure

Возможности облачных платформ

Масштабирование системы по необходимостиВысокая доступность и отказоустойчивость Эффективное управление расходамиВозможность фокусироваться на создании и обслуживании продукта, а не на инфраструктурыБыстрая публикация решений любого масштаба

Page 7: Подходы облачного проектирования в Windows Azure

Классический дата-центр и облако

Время

Ресурсы

Реальнаянагрузка

Добавили лишних

ресурсов

Нужно добавить ресурсы

Облако

Дата-центр

Page 8: Подходы облачного проектирования в Windows Azure

Эффективные облачные сценарии нагрузки

1.Периодическое включение (выборы)

2.Рост нагрузки(социальная сеть)

3.Периодическая нагрузка (рабочий инструмент)

4.Пиковая нагрузка (промо-акция)

Ресурсы

Время

Ресурсы

Время

Ресурсы

Время

Ресурсы

Время

Page 9: Подходы облачного проектирования в Windows Azure

Технологическая реализация облака

Хранилище состояния

Механизм очередей

Хранилище данных

Общая база данных

Общая файловая система

Балансировка нагрузки

«Внешние» серверы

(веб)

«Внутренние» серверы

(фон)

Page 10: Подходы облачного проектирования в Windows Azure

Windows Azure

Page 11: Подходы облачного проектирования в Windows Azure

Windows Azure

Хранилище состояния

Механизм очередей

Хранилище данных

Общая база данных

Общая файловая система

AppFabric Caching

Queue Service

Хранилище данных

SQL Azure

Table Service

Blob Service

Page 12: Подходы облачного проектирования в Windows Azure

Windows Azure

Windows Azure Platform – окружение, управляющее облаком и набор сервисов (.NET, identity, storage). Набор виртуальных машин (web role, worker role)SQL Azure – распределенная реляционная база данныхTable Service – не-реляционное хранилище сущностей (1 Мб, (255 – 3) свойства у каждой сущности)Blob Service – хранилище двоичных данных, может быть подключено как общий сетевой диск (1 Тб в page blob, 200 Гб в block blob)Queues – квази-транзакционная очередь (8Кб сообщение)

Page 13: Подходы облачного проектирования в Windows Azure

Windows Azure AppFabric

Service Bus - связь между распределенными приложениями на основе сообщенийAccess Control – управление доступомDistributed Caching – распределенный кэш в памяти

Хранение состоянияКеширование данныхОдинаковая модель программирования для приложений, размещаемых в облаке и частном дата-центре

Page 14: Подходы облачного проектирования в Windows Azure

Требования к облачной архитектуре

Page 15: Подходы облачного проектирования в Windows Azure

Требования к архитектуре в облаке

Слабая связанностьАвтономные компоненты, общающиеся сообщениями

МасштабируемостьНезависимое дублирование компонентов

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

ПараллелизмАсинхронная обработка задач

Сохранение целостности данныхВалидация данных и сообщений

Page 16: Подходы облачного проектирования в Windows Azure

Типовая сценарии использования облака

Они же – возможный путь миграции существующего приложения в облако.

Размещение данных в облакеРазмещение фоновой обработки в облакеРазмещение приложения в облаке

Page 17: Подходы облачного проектирования в Windows Azure

Данные в облаке

Page 18: Подходы облачного проектирования в Windows Azure

Данные в облаке

Данные

Приложение

Хранилище данных

Сервисный слой

Page 19: Подходы облачного проектирования в Windows Azure

Проектирование: данные в облаке

Разбиение данныхГоризонтальноеВертикальное

Требуемый эффектУменьшение объемов данныхУменьшение количества транзакцийУменьшение стоимости эксплуатации хранилищаПовышение эластичности в период пиковых нагрузок

Page 20: Подходы облачного проектирования в Windows Azure

Горизонтальное разбиение

Данные «размазаны» между несколькими нодамиВозможно масштабированиеДешевые запросы внутри одной партицииДорогие запросы между разными партициями

Page 21: Подходы облачного проектирования в Windows Azure

Горизонтальное разбиение - Table Storage

Партиции автоматически балансируютсяНет необходимости разбивать на равномерные части

«Горячие» активные партиции могут быть масштабируемы

Windows Azure может выделить больше ресурсов более загруженным партициям

Partition Key и Row Key = уникальный IDPartitionKey должен быть указан для Create, Update, DeleteВыборки между партициями выполняются последовательно

Данные могут быть возвращены несколькими страницами (continuation tokens)

Page 22: Подходы облачного проектирования в Windows Azure

Горизонтальное разбиение – SQL Azure

Партиции – разные базы данных в SQL AzureНеобходимо для объемов данных более > 50GBБольшая транзакционная нагрузка (возможны сбои)

Логика разбиения полностью на разработчикеНет автоматической балансировки партиций

Необходимо равномерно распрелелять нагрузкуРазмер партиции не играет роли, важна нагрузка

Партиции стоят денегОптимизация расходов за счет создания дополнительных партиций под высокую нагрузку и удаление после заверешия высокой нагрузки

Page 23: Подходы облачного проектирования в Windows Azure

Вертикальное разбиениеРаспределение данных между хранилищамиЧасто используемые данные хранятся в «дорогом» индексированном хранилищеБольшие объемы данных в «дешевом» бинарном хранилищеПолучение всей строки требует более одного запроса

Page 24: Подходы облачного проектирования в Windows Azure

Цели вертикального разбиения

Баланс производительности и стоимостиSQL Azure

ИндексируемоеНет платы за транзакциюФиксированная плата за объем хранилища

Windows Azure StorageОграниченные возможности индексированияОплата за запросПлата зависит от объемов передаваемых данных

Page 25: Подходы облачного проектирования в Windows Azure

Пример вертикального разбиения

Данные с возможностью поиска в Table Storage или SQL AzureИндексация (SQL Azure)Нет оплаты за запрос (SQL Azure)Ниже расходы на объем хранилища (Windows Azure Table Storage)

Небольшие изображения в Table StorageДвоичное содержимое менее 64кбГрупповые выборки позволяют экономить на транзакциях

Полные изображения в Blob StorageБольшие объемы данныхЕсть возможность отдавать изображения напрямую по HTTP и CDN

Page 26: Подходы облачного проектирования в Windows Azure

Гибридное разбиение

Page 27: Подходы облачного проектирования в Windows Azure

Фоновая обработка в облаке

Page 28: Подходы облачного проектирования в Windows Azure

Фоновая обработка в облаке

Данные

Приложение

Worker Role

Очередь

Хранилище данных

Сервисный слой

Сервисный слой

Page 29: Подходы облачного проектирования в Windows Azure

Асинхронная обработка в облаке

Приложение Обработчики

Очередь

Задача 1

Задача 2

Задача 3

Задача N

Page 30: Подходы облачного проектирования в Windows Azure

Проектирование: очереди в облаке

Основные проблемы обработки в очередиПовторная обработка сообщенияМногократные попытки обработать сообщения, вызывающие сбои обработкиПростой ресурсов обработчиков сообщенийБольшие объемы данных, подлежащих обработке

Page 31: Подходы облачного проектирования в Windows Azure

Повторная обработка сообщений

Проблема: сообщение обработано Worker, результат записан, однако Worker не удалил сообщение из очереди.Решение: ведение лога со статусом обработки сообщений.

Уникальный идентификатор транзакцииЗапись результата в рамках одной транзакции с обновлением лога обработки сообщения.В SQL Azure – транзакции уровня базы данныхВ Table Storage - Entity Group Transaction в рамках одной партиции

Page 32: Подходы облачного проектирования в Windows Azure

Сообщение, вызывающее ошибки

Проблема: сообщение вызывает сбой при обработке, «выбивая» по очереди Worker из пула.Решение: проверка значения счетчика количества попыток обработать сообщение (DequeueCount) и установка лимитов на количество попыток.

Проверка DequeueCount должна быть первой операцией!«Проблемные сообщения» можно записывать в отдельную очередь или лог для последующего анализа.В случае, если «проблемное сообщение» может быть исправлено, его можно вернуть в основную очередь (например, снова доступны необходимые ресурсы).

Page 33: Подходы облачного проектирования в Windows Azure

Простой ресурсов обработчиков сообщений

Проблема: есть несколько типов обработчиков сообщений, часть из которых не загружена на 100%.Решение: использование общей очереди сообщений для разных типов задач с указанием типа задачи в самом сообщении.

Динамическая загрузка сборки под каждую конкретную задачу.Загрузки сборки в новый AppDomain, чтобы не нарушать работу всего Worker в случае сбоя обработки.Новые типы задач можно добавлять загружая новые сборки в Blob Storage, соответственно при изменении кода одной сборки не нужно обновлять все решение.

Page 34: Подходы облачного проектирования в Windows Azure

Большие объемы данных

Проблема: задача требует обработки слишком большого объема данных.Решение: разбиение всего объема данных на части.

Паттерн MapReduceРазбиение на части с уникальными идентификаторамиФинальная стадия – объединение результатов обработки.В этом случае обработка происходит асинхронно, то есть подходит только для тех задач, которые могут быть разбиты на независимые компоненты.

Page 35: Подходы облачного проектирования в Windows Azure

Приложение в облаке

Page 36: Подходы облачного проектирования в Windows Azure

Приложение в облаке

Данные

Web RoleWorker

Role

Очередь

Хранилище данных

Сервисный слой

Page 37: Подходы облачного проектирования в Windows Azure

Проектирование: приложение в облаке

Карусельная диспечеризация запросовНе гарантируется, что последовательные запросы приходят одной машинеКаждый элемент страницы может быть получен из разных источников (включая Ajax обновления)

У всех Web Roles должен быть один Machine Key для хеширования View State

Обеспечивается Windows Azure Fabric

Мульти-тенантность

Page 38: Подходы облачного проектирования в Windows Azure

Общее владение состоянием

AppFabric CachingMicrosoft.Web.DistributedCache

SQL AzureДва обращения в базу (чтение и запись) на каждый запросПостоянное хранилище, нет оплаты за запрос

Table StorageТребуется написание соответствующего провайдераТребуется оплата за транзакции

CookiesИзбыточная нагрузка (на каждый запрос отправляется cookie, к статическим ресурсам в том числе)

Page 39: Подходы облачного проектирования в Windows Azure

Мульти-тенантность

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

Вариант 1: набор А-записейВариант 2: CNAME для *.domain

Page 40: Подходы облачного проектирования в Windows Azure

Загрузка файлов в ASP.NET

Проблема: ASP.NET буферизует загружаемые файлы во временную директорию, в Windows Azure для веб-роли доступно не более 100 Мб локального хранилища.Решение: создать собственный механизм загрузки.

Вариант 1: IHttpHandler для буферизации загружаемого файла в Storage или на подключенный дискВариант 2: загружать непосредственно в Blob Storage со стороны клиента (например, используя контрол на Silverlight)

Page 41: Подходы облачного проектирования в Windows Azure

Заключение – требования к архитектуре

Слабая связанностьАвтономные компоненты, общающиеся сообщениями

МасштабируемостьНезависимое дублирование компонентов

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

ПараллелизмАсинхронная обработка задач

Сохранение целостности данныхВалидация данных и сообщений

Page 42: Подходы облачного проектирования в Windows Azure

Полезные ссылки

Документация по Windows Azurehttp://msdn.microsoft.com/en-us/library/windowsazure/

Azure Design Patternshttp://azuredesignpatterns.com/

Пример архитектуры для Azurehttp://cloudsample.codeplex.com/

Page 43: Подходы облачного проектирования в Windows Azure

Обратная связь

Уважаемые участники!Ваше мнение очень важно для нас!В блокноте, который находится в инфопаке участника, вы найдете анкету для оценки докладовПожалуйста, оцените доклад и сдайте анкету при выходе из зала модераторуДля участия в конкурсе заполненных анкет, отметьте в анкете номер, который указан на вашем бейдже

Спасибо!

Page 44: Подходы облачного проектирования в Windows Azure

Вопросы

ARC208Гайдар Магдануров

Руководитель направления веб-технологий[email protected]

Вы сможете задать вопросы докладчику в зоне Microsoft в зале №17 в течение часа после завершения этой сессии

Page 45: Подходы облачного проектирования в Windows Azure

Recommended