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

Содержание

Слайд 2

ARC208

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

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

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

Microsoft

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

Слайд 3

Содержание

Облачные платформы
Предпосылки появления и возможности
Windows Azure
Краткий обзор основных компонентов
Типовая архитектура
… приложений

Содержание Облачные платформы Предпосылки появления и возможности Windows Azure Краткий обзор основных
в облаке
Важные моменты
… при проектировании облачных приложений

Слайд 4

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

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

Слайд 5

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

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

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

Слайд 6

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

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

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

Слайд 7

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

Время

Ресурсы

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

Добавили лишних ресурсов

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

Облако

Дата-центр

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

Слайд 8

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

Периодическое включение (выборы)
Рост нагрузки (социальная сеть)
Периодическая нагрузка (рабочий инструмент)
Пиковая нагрузка

Эффективные облачные сценарии нагрузки Периодическое включение (выборы) Рост нагрузки (социальная сеть) Периодическая
(промо-акция)

Ресурсы

Время

Ресурсы

Время

Ресурсы

Время

Ресурсы

Время

Слайд 9

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

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

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

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

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

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

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

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

Технологическая реализация облака Хранилище состояния Механизм очередей Хранилище данных Общая база данных

(веб)

«Внутренние» серверы
(фон)

Слайд 10

Windows Azure

Windows Azure

Слайд 11

Windows Azure

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

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

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

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

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

AppFabric Caching

Queue Service

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

SQL

Windows Azure Хранилище состояния Механизм очередей Хранилище данных Общая база данных Общая
Azure

Table Service

Blob Service

Слайд 12

Windows Azure

Windows Azure Platform – окружение, управляющее облаком и набор сервисов (.NET,

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

Слайд 13

Windows Azure AppFabric

Service Bus - связь между распределенными приложениями на основе сообщений
Access

Windows Azure AppFabric Service Bus - связь между распределенными приложениями на основе
Control – управление доступом
Distributed Caching – распределенный кэш в памяти
Хранение состояния
Кеширование данных
Одинаковая модель программирования для приложений, размещаемых в облаке и частном дата-центре

Слайд 14

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

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

Слайд 15

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

Слабая связанность
Автономные компоненты, общающиеся сообщениями
Масштабируемость
Независимое дублирование компонентов
Отказоустойчивость
Независимая работа

Требования к архитектуре в облаке Слабая связанность Автономные компоненты, общающиеся сообщениями Масштабируемость
компонентов
Параллелизм
Асинхронная обработка задач
Сохранение целостности данных
Валидация данных и сообщений

Слайд 16

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

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

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

Слайд 17

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

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

Слайд 18

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

Данные

Приложение

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

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

Данные в облаке Данные Приложение Хранилище данных Сервисный слой

Слайд 19

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

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

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

Слайд 20

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

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

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

Слайд 21

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

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

Горизонтальное разбиение - Table Storage Партиции автоматически балансируются Нет необходимости разбивать на
активные партиции могут быть масштабируемы
Windows Azure может выделить больше ресурсов более загруженным партициям
Partition Key и Row Key = уникальный ID
PartitionKey должен быть указан для Create, Update, Delete
Выборки между партициями выполняются последовательно
Данные могут быть возвращены несколькими страницами (continuation tokens)

Слайд 22

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

Партиции – разные базы данных в SQL Azure
Необходимо

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

Слайд 23

Вертикальное разбиение

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

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

Слайд 24

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

Баланс производительности и стоимости
SQL Azure
Индексируемое
Нет платы за транзакцию
Фиксированная плата за

Цели вертикального разбиения Баланс производительности и стоимости SQL Azure Индексируемое Нет платы
объем хранилища
Windows Azure Storage
Ограниченные возможности индексирования
Оплата за запрос
Плата зависит от объемов передаваемых данных

Слайд 25

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

Данные с возможностью поиска в Table Storage или SQL Azure
Индексация

Пример вертикального разбиения Данные с возможностью поиска в Table Storage или SQL
(SQL Azure)
Нет оплаты за запрос (SQL Azure)
Ниже расходы на объем хранилища (Windows Azure Table Storage)
Небольшие изображения в Table Storage
Двоичное содержимое менее 64кб
Групповые выборки позволяют экономить на транзакциях
Полные изображения в Blob Storage
Большие объемы данных
Есть возможность отдавать изображения напрямую по HTTP и CDN

Слайд 26

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

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

Слайд 27

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

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

Слайд 28

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

Данные

Приложение

Worker Role

Очередь

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

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

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

Фоновая обработка в облаке Данные Приложение Worker Role Очередь Хранилище данных Сервисный слой Сервисный слой

Слайд 29

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

Приложение

Обработчики

Очередь

Задача 1

Задача 2

Задача 3

Задача N

Асинхронная обработка в облаке Приложение Обработчики Очередь Задача 1 Задача 2 Задача 3 Задача N

Слайд 30

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

Основные проблемы обработки в очереди
Повторная обработка сообщения
Многократные попытки обработать

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

Слайд 31

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

Проблема: сообщение обработано Worker, результат записан, однако Worker не удалил

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

Слайд 32

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

Проблема: сообщение вызывает сбой при обработке, «выбивая» по очереди Worker

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

Слайд 33

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

Проблема: есть несколько типов обработчиков сообщений, часть из которых

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

Слайд 34

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

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

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

Слайд 35

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

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

Слайд 36

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

Данные

Web Role

Worker Role

Очередь

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

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

Приложение в облаке Данные Web Role Worker Role Очередь Хранилище данных Сервисный слой

Слайд 37

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

Карусельная диспечеризация запросов
Не гарантируется, что последовательные запросы приходят одной

Проектирование: приложение в облаке Карусельная диспечеризация запросов Не гарантируется, что последовательные запросы
машине
Каждый элемент страницы может быть получен из разных источников (включая Ajax обновления)
У всех Web Roles должен быть один Machine Key для хеширования View State
Обеспечивается Windows Azure Fabric
Мульти-тенантность

Слайд 38

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

AppFabric Caching
Microsoft.Web.DistributedCache
SQL Azure
Два обращения в базу (чтение и запись) на

Общее владение состоянием AppFabric Caching Microsoft.Web.DistributedCache SQL Azure Два обращения в базу
каждый запрос
Постоянное хранилище, нет оплаты за запрос
Table Storage
Требуется написание соответствующего провайдера
Требуется оплата за транзакции
Cookies
Избыточная нагрузка (на каждый запрос отправляется cookie, к статическим ресурсам в том числе)

Слайд 39

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

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

Мульти-тенантность Проблема: несколько клиентов используют один сервис, требуется обеспечить разные базы данных.
базы данных к DNS имени.
Вариант 1: набор А-записей
Вариант 2: CNAME для *.domain

Слайд 40

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

Проблема: ASP.NET буферизует загружаемые файлы во временную директорию, в

Загрузка файлов в ASP.NET Проблема: ASP.NET буферизует загружаемые файлы во временную директорию,
Windows Azure для веб-роли доступно не более 100 Мб локального хранилища.
Решение: создать собственный механизм загрузки.
Вариант 1: IHttpHandler для буферизации загружаемого файла в Storage или на подключенный диск
Вариант 2: загружать непосредственно в Blob Storage со стороны клиента (например, используя контрол на Silverlight)

Слайд 41

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

Слабая связанность
Автономные компоненты, общающиеся сообщениями
Масштабируемость
Независимое дублирование компонентов
Отказоустойчивость
Независимая работа

Заключение – требования к архитектуре Слабая связанность Автономные компоненты, общающиеся сообщениями Масштабируемость
компонентов
Параллелизм
Асинхронная обработка задач
Сохранение целостности данных
Валидация данных и сообщений

Слайд 42

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

Документация по Windows Azure
http://msdn.microsoft.com/en-us/library/windowsazure/
Azure Design Patterns
http://azuredesignpatterns.com/
Пример архитектуры для Azure
http://cloudsample.codeplex.com/

Полезные ссылки Документация по Windows Azure http://msdn.microsoft.com/en-us/library/windowsazure/ Azure Design Patterns http://azuredesignpatterns.com/ Пример архитектуры для Azure http://cloudsample.codeplex.com/

Слайд 43

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

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

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

Слайд 44

Вопросы

ARC208
Гайдар Магдануров
Руководитель направления веб-технологий
[email protected]
www.radiag.ru
Вы сможете задать вопросы докладчику в зоне Microsoft

Вопросы ARC208 Гайдар Магдануров Руководитель направления веб-технологий gaidarma@microsoft.com www.radiag.ru Вы сможете задать
в зале №17 в течение часа после завершения этой сессии
Имя файла: Время-Ресурсы-Реальная-нагрузка-Добавили-лишних-ресурсов-Нужно-добавить-ресурсы-Облако-Дата-центр.---презентация.pptx
Количество просмотров: 781
Количество скачиваний: 1