Windows Azure Storage

Preview:

DESCRIPTION

A brief overview of Windows Azure Storage abstractions such as Azure Blobs, Azure Tables, Azure Queues and Azure Drives

Citation preview

День 2. Windows Azure Storage.

Feschenko AlexWindows Azure MVPDigital Cloud Technologies

Содержание

Модели хранения данныхRelational and Non-Relational

Windows Azure StorageАккаунтЛокальная эмуляцияWindows Azure Blob Storage

Windows Azure Table Storage

Windows Azure Queue Storage

Windows Azure Drives

Модели хранения данных

Реляционная модель

Не реляционная модель

Не реляционная модель

1Блобы, таблицы и очереди

2Не гарантируют целостность данных

3В результате прекрасно масштабируются

4Сохранение целостности возлагается на плечи разработчика

Реляционная модель

1Классическая реляционная база данных

2Встроенная поддержка целостности данных

3Поддерживаются сложные запросы (#joins)

4Сложнее масштабировать

Windows Azure Storage

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

Доступно через RESTМожно использовать как в облачных приложенияТак и в любых других приложениях

Аккаунт хранилищаГлобальное имя хранилища

North Central US

South Central USNorthern Europe

Western Europe East Asia

South East Asia

США Европа Азия

Можно выбрать месторасположение аккаунта

West US

East US

Аккаунт хранилищаВозможность включения CDN24 CDN-узла по всему миру

Возможность колокации с вычислительной частьюЯвно или используя Affinity Groups

2 независимых 512-битных ключа

100 Тб на аккаунт

Новые возможности

Гео-репликацияАналитикаЛоги: Трассировка всех транзакций к хранилищуМетрики: Статистика по объему и запросам к блобам, таблицам и очередям

Улучшены HTTP-заголовки для блобов

Локальное хранилищеЛокальный эмулятор хранилищаПозволяет вести разработку OfflineНеобходим SQL Express 2005/2008 или выше

http://msdn.microsoft.com/en-us/gg433135

Программный интерфейс

В презентации будет рассмотрено RESTful APIМожно пользоваться им из любого HTTP-клиента

Microsoft.WindowsAzure.StorageClientСтрого типизированная оболочка для REST API

Библиотеки на других языках

Безопасность хранилища

Каждый запрос является безопаснымHTTPS точка доступаЦифровая подпись привилегированных операций

Два 512-битных симметричных ключаМогут пересоздаваться независимо

Точечное предоставление прав при помощи Shared Access Signatures

Абстракции хранилища

ТаблицыСтруктурированное хранилище данных.

ОчередиПостоянное хранилище и коммуникационный канал.

БлобыПростые именованные файлы с метаданными.

ДискиПостоянные NTFS-разделы основанные на блобах.

Хранилище блобов

Концепция

БлобКонтейнерАккаунт

http://<account>.blob.core.windows.net/<container>/<blobname>

Блок/страница

contoso

PIC01.JPG

Block/Page

Block/Page

PIC02.JPG

images

VID1.AVIvideos

Подробности

Основные операции

PutBlobGetBlobDeleteBlobCopyBlobSnapshotBlob LeaseBlob

Подробности

Ассоциация метаданных

Стандартные HTTP-заголовки(Cache-Control, Content-Encoding, Content-Type…)

Метаданные – это <name, value> пары до 8 Кб на блоб

Устанавливаются как часть операции PutBlob или отдельно

Подробности

Блобы всегда адресуются по

именам

Можно использовать “/” в имениe.g. /<container>/myblobs/blob.jpg

Контейнеры блобовМножество контейнеров на аккаунтСпециальный $root контейнер

Контейнер блобовХранит множество блобовУстанавливаются политики безопасностиАссоциация метаданных с контейнеромСписок блобов контейнераВключая метаданныеНет фильтров

GET http://.../products?comp=list&prefix=Tents&delimiter=/

<Blob>Tents/PalaceTent.wmv</Blob><Blob>Tents/ShedTent.wmv</Blob>

Перечисление блобов

Операция List Blob принимает параметрыPrefixDelimiterInclude= (snapshots, metadata etc…)

http://adventureworks.blob.core.windows.net/ Products/Bikes/SuperDuperCycle.jpg Products/Bikes/FastBike.jpg Products/Canoes/Whitewater.jpg Products/Canoes/Flatwater.jpg Products/Canoes/Hybrid.jpg Products/Tents/PalaceTent.jpg Products/Tents/ShedTent.jpg

http://.../products?comp=list&prefix=Canoes&maxresults=2

&marker=MarkerValue

<Blob>Canoes/Hybrid.jpg</Blob>

Пейджинг

Большие списки блобов могут выводиться страницамиУстановить maxresults или;Превысить макимальное количество maxresults (5000)

http://.../products?comp=list&prefix=Canoes&maxresults=2

<Blob>Canoes/Whitewater.jpg</Blob><Blob>Canoes/Flatwater.jpg</Blob><NextMarker>MarkerValue</NextMarker>

Два типа блобов

БлочныеДля сценариев стриминга

Блоб состоит из последовательности блоковБлок идентифицируется Block ID

200 Гб

Оптимистичная конкуренция при помощи Etags

СтраничныеДля сценариев случайного доступа

Блоб состоит из набора страницСтраница идентифицируется сдвигом от начала блоба

1 Тб

Оптимистичная или Пессимистичная при помощи эксклюзивного доступа

TheBlob.wmv

Загрузка блочного блоба

10 Гб Видео

Blo

ck I

d 1

Blo

ck I

d 2

Blo

ck I

d 3

Blo

ck I

d N

blobName = “TheBlob.wmv”;PutBlock(blobName, blockId1, block1Bits);PutBlock(blobName, blockId2, block2Bits);…………PutBlock(blobName, blockIdN, blockNBits);PutBlockList(blobName,

blockId1,…,blockIdN);

TheBlob.wmv

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

Блоб

Windows AzureStorage

Страничный блоб

Создание блобаУказание размера = 10 ГбПлата только за хранимые страницы

Размер страницы = 512 байтОперации случайного доступа

PutPage[512, 2048)PutPage[0, 1024)ClearPage[512, 1536)PutPage[2048,2560)

GetPageRange[0, 4096) возвращает валидные фрагменты:

[0,512) , [1536,2560)GetBlob[1000, 2048) возвращает

Нули для первых 536 байтСледующие 512 байт для фрагмента [1536,2048)

0

10 GB

512

1024

1536

2048

2560

Ад

ресн

ое п

рост

ран

ство

Shared Access Signatures

Точечный доступ к контейнерам и блобамПодписывается URLОтменаИспользуется временной интервалИспользуется политика уровня контейнера

Два подходаAd-hocPolicy based

Ad Hoc СигнатурыСоздается временная сигнатураSignedresource Блоб или КонтейнерAccessPolicy Start, Expiry and PermissionsСигнатура HMAC-SHA256

ЮзкейсыЕдиноразовые URLsНапример для предоставления единоразового права загрузки в контейнер

http://...blob.../pics/image.jpg?sr=c&st=2009-02-09T08:20Z&se=2009-02-10T08:30Z&sp=w

&sig= dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d

Создание политики Специфицируются StartTime, ExpiryTime, Permissions

Создать подписанный URLSignedresource Блоб или КонтейнерSignedidentifier опциональный указатель на политикуСигнатура HMAC-SHA256 of above fields

ЮзкейсыПолитика для пользователей и групп с возможностью отмены

http://...blob.../pics/image.jpg?sr=c&si=MyUploadPolicyForUserID12345

&sig=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d

Policy Based Сигнатуры

Сеть доставки контента(CDN)

Высокоэффективная сеть дистрибуции блобов24 глобальных узла (США, Европа, Азия, Австралия и Южная Америка)Неважно где находятся пользователи приложения

Blob URL vs CDN URL:Windows Azure Blob URL: http://images.blob.core.windows.net/

Windows Azure CDN URL: http://<id>.vo.msecnd.net/

Специфическое доменное имя: http://cdn.contoso.com/

pic1.jpg

Windows Azure CDN

Для включения:Зарегистрировать на порталеУстановить контейнер публичным

pic1.jpg

GEThttp://guid01.vo.msecnd.net/images/pic.1jpg

http://sally.blob.core.windows.net/images/pic1.jpg

http://sally.blob.core.windows.net/ http://guid01.vo.msecnd.net/

pic1.jpg

404

TTL Сеть дистрибуции контента

Хранилище блобов

Узел

Узел

Узел

Диски

Windows Azure Drives

Постоянные NTFS разделы для Azure ComputeМожно использовать NTFS API для доступа к дискамМожно использовать System.IO

ПреимуществаПеремещение приложений использующих NTFS API значительно упрощаетсяПостоянство и надежность

Диск это страничный блобДля использования необходимо примонтировать к инстансуЛокальный кеш на инстансе для операций чтения

Особенности дисков

Диск – это форматированный страничный блобДо 1 Тб в размере

Страничный блоб может монтироваться:На один инстанс для операций чтения и записи На множество инстансов в readonly режиме

Особенности дисков

Инстанс может смонтировать до 16 дисковУдаленный доступ через BLOBUIНевозможно удаленно смонтироватьМожно загрузить VHD и примонтировать его к инстансуМожно загрузить VHD и примонтировать его локально

Подробности дисковОперации выполняются через NTFS API а не через RESTОсновные операцииCreateDriveСоздает новый форматированный блоб в хранилище

MountDrive/UnmountDriveМонтирует диск к текущему инстансу

Демонтирует диск и снимает lock

Get Mounted DrivesВозвращает список смонтированных дисков

Snapshot DriveСоздает snapshot-копию диска

VM

Как работают дискиДиск – форматированный блоб

Процесс монтирования получает эксклюзивный доступ

Процесс монтирования определяет размер кеша

Не буферизированные операции записи отправляются в блоб

NTFS чтения происходят из кеша или из блоба в случае промаха

DemoBlob

ОС

Приложение

Диск X:

Windows Azure Blob Service

Локальный кеш

Пример• CloudStorageAccount account =

CloudStorageAccount.FromConfigurationSetting("CloudStorageAccount");

• //Инициализация локального кешаCloudDrive.InitializeCache(localCacheDir, cacheSizeInMB);

• //Создание диска(страничного блоба)CloudDrive drive = account.CreateCloudDrive(pageBlobUri);drive.Create(1024 /* sizeInMB */);

• //Монтирование дискаstring pathOnLocalFS = drive.Mount(cacheSizeInMB, DriveMountOptions.None);

• //Операции

• …

• //Создание снепшота дискаUri snapshotUri = drive.Snapshot();

• //Демонтирование дискаdrive.Unmount();

Отказоустойчивость

Для сохранения необходимо использовать команду FlushSystem.IO.Stream.Flush()

Диски защищаются эксклюзивным доступом 1 минута таймаутОбрабатывается Windows Azure OS DriverПроцесс демонтирования при RoleEntryPoint.OnStop

При паденииЭксклюзивный доступ снимается в течение минутыМожно смонтировать на другой инстанс

Таблицы

Концепция

СущностьТаблицаАккаунт

contoso

Name =…Email = …

Name =…EMailAdd=

customers

Photo ID =…Date =…

photos

Photo ID =…Date =…

Свойства сущностиДо 255 свойствДо 1 Мб на сущность

Обязательные свойстваPartitionKey & RowKey Уникально идентифицируют сущностьОпределяют порядок сортировки

Timestamp Оптимистичная конкуренцияОрганизовывается через HTTP Etag

Нет фиксированной схемы для других свойствСвойство хранится как <name, typed value> параНет схемы для таблицыСвойства могут быть стандартными типамиString, binary, bool, DateTime, GUID, int, int64, and double

Нет фиксированной схемы

FIRST LAST BIRTHDATE

Wade Wegner 2/2/1981

Nathan Totten 3/15/1965

Nick Harris May 1, 1976

FAV SPORT

Canoeing

Запросы

FIRST LAST BIRTHDATE

Wade Wegner 2/2/1981

Nathan Totten 3/15/1965

Nick Harris May 1, 1976

?$filter=Last eq ‘Wegner’

Предназначение PartitionKeyЛокация сущностиСущности с одним PartitionKey будут храниться в одном физическом узлеЭффективные запросыСтремитесь включать PartitionKey в каждый запрос

Групповые транзакцииАтомарные множественные Insert/Update/Delete операции в пределах одного PartitionKey

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

Очереди

Концепция

Сообщение

ТаблицаАккаунт

customer ID order ID http://…

adventureworks

order processing

customer ID order ID http://…

Слабосвязанные сценарииПозволяют организовать поток данных между приложениямиЗагрузить работу в очередьПоставщик может забыть о работе как только она в очередиМножество потребителей работают с очередьюДля экстремальных нагрузокИспользуйте множество очередейЧитайте сообщения пакетамиНесколько задач в сообщении

Очередь

Web Role

Web Role

Web Role

Worker Role

Worker Role

Worker Role

Worker Role

Подробности

Простой коммуникационный каналНет лимита на длину очереди64kb на сообщениеListQueues - список очередей в аккаунте

ОперацииCreateQueue DeleteQueueGet/Set MetadataClear Messages

Подробности

Операции с сообщениямиPutMessage– Ставит сообщение в очередьGetMessages – Читает одно или более сообщений и скрывает ихPeekMessages – Читает одно или более сообщений без их сокрытияDeleteMessage – Навсегда удаляет сообщениеUpdateMessage – Клиент обновляет контент сообщения

Гарантированная обработка

Гарантируется надежная обработка и доставка сообщений при соблюдении следующих шаговПотребитель опрашивает очередь на предмет появления новых сообщений. Как только они появляются потребитель начинает и обработку и делает их невидимыми для другихПотребитель удаляет сообщение по окончании обработкиЕсли потребитель аварийно завершается сообщение становится видимым для других потребителей

Blobs and Queues

demo

Подбивая итоги

Фундаментальные абстракции дляпостроения приложенийБлобы: Файлы и большие объектыДиски: NTFS разделы для миграции приложенийТаблицы: Масштабируемые структурированные хранилищаОчереди: Средства гарантированной доставки сообщений

Удобно использовать при помощи SDK

Спасибо!

Recommended