53
День 2 . Windows Azure Storage. Feschenko Alex Windows Azure MVP Digital Cloud Technologies

Windows Azure Storage

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Windows Azure Storage

День 2. Windows Azure Storage.

Feschenko AlexWindows Azure MVPDigital Cloud Technologies

Page 2: Windows Azure Storage

Содержание

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

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

Windows Azure Table Storage

Windows Azure Queue Storage

Windows Azure Drives

Page 3: Windows Azure Storage

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

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

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

Page 4: Windows Azure Storage

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

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

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

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

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

Page 5: Windows Azure Storage

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

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

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

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

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

Page 6: Windows Azure Storage

Windows Azure Storage

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

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

Page 7: Windows Azure Storage

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

North Central US

South Central USNorthern Europe

Western Europe East Asia

South East Asia

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

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

West US

East US

Page 8: Windows Azure Storage

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

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

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

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

Page 9: Windows Azure Storage

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

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

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

Page 10: Windows Azure Storage

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

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

Page 11: Windows Azure Storage

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

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

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

Page 12: Windows Azure Storage

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

Page 13: Windows Azure Storage

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

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

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

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

Page 14: Windows Azure Storage

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

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

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

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

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

Page 15: Windows Azure Storage

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

Page 16: Windows Azure Storage

Концепция

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

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

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

contoso

PIC01.JPG

Block/Page

Block/Page

PIC02.JPG

images

VID1.AVIvideos

Page 17: Windows Azure Storage

Подробности

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

PutBlobGetBlobDeleteBlobCopyBlobSnapshotBlob LeaseBlob

Page 18: Windows Azure Storage

Подробности

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

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

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

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

Page 19: Windows Azure Storage

Подробности

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

именам

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

Page 20: Windows Azure Storage

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

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

Page 21: Windows Azure Storage

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

Page 22: Windows Azure Storage

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>

Page 23: Windows Azure Storage

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

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

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

200 Гб

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

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

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

1 Тб

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

Page 24: Windows Azure Storage

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

Page 25: Windows Azure Storage

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

Создание блобаУказание размера = 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

Ад

ресн

ое п

рост

ран

ство

Page 26: Windows Azure Storage

Shared Access Signatures

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

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

Page 27: Windows Azure Storage

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

Page 28: Windows Azure Storage

Создание политики Специфицируются 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 Сигнатуры

Page 29: Windows Azure Storage

Сеть доставки контента(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/

Page 30: Windows Azure Storage

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 Сеть дистрибуции контента

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

Узел

Узел

Узел

Page 31: Windows Azure Storage

Диски

Page 32: Windows Azure Storage

Windows Azure Drives

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

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

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

Page 33: Windows Azure Storage

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

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

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

Page 34: Windows Azure Storage

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

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

Page 35: Windows Azure Storage

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

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

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

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

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

Page 36: Windows Azure Storage

VM

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

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

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

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

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

DemoBlob

ОС

Приложение

Диск X:

Windows Azure Blob Service

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

Page 37: Windows Azure Storage

Пример• 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();

Page 38: Windows Azure Storage

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

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

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

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

Page 39: Windows Azure Storage

Таблицы

Page 40: Windows Azure Storage

Концепция

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

contoso

Name =…Email = …

Name =…EMailAdd=

customers

Photo ID =…Date =…

photos

Photo ID =…Date =…

Page 41: Windows Azure Storage

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

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

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

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

Page 42: Windows Azure Storage

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

FIRST LAST BIRTHDATE

Wade Wegner 2/2/1981

Nathan Totten 3/15/1965

Nick Harris May 1, 1976

FAV SPORT

Canoeing

Page 43: Windows Azure Storage

Запросы

FIRST LAST BIRTHDATE

Wade Wegner 2/2/1981

Nathan Totten 3/15/1965

Nick Harris May 1, 1976

?$filter=Last eq ‘Wegner’

Page 44: Windows Azure Storage

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

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

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

Page 45: Windows Azure Storage

Очереди

Page 46: Windows Azure Storage

Концепция

Сообщение

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

customer ID order ID http://…

adventureworks

order processing

customer ID order ID http://…

Page 47: Windows Azure Storage

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

Очередь

Web Role

Web Role

Web Role

Worker Role

Worker Role

Worker Role

Worker Role

Page 48: Windows Azure Storage

Подробности

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

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

Page 49: Windows Azure Storage

Подробности

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

Page 50: Windows Azure Storage

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

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

Page 51: Windows Azure Storage

Blobs and Queues

demo

Page 52: Windows Azure Storage

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

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

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

Page 53: Windows Azure Storage

Спасибо!