Windows Azure Storage Plugin For WordPress - - Revision 708014:
Windows Azure Storage
-
Upload
alexandr-feschenko -
Category
Technology
-
view
1.576 -
download
0
description
Transcript of Windows Azure Storage
День 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
Спасибо!