300 likes | 314 Views
Использование блобов. В этом модуле: Что такое хранилище блобов ? Как получить доступ к хранилищу блобов ? Что такое диск Azure? . BLOB. B inary L arge OB ject. Нужен разделённый доступ.
E N D
Использование блобов В этом модуле: Что такое хранилище блобов? Как получить доступ к хранилищу блобов? Что такое диск Azure?
BLOB Binary Large OBject
Нужен разделённый доступ В масштабируемом окружении данные должны быть в разных местах. Балансировщик нагрузки не «липкий». Web -роль Хранилище Web -роль LB Web -роль
Блобы в Azure & размер • Размер блоба – до 1Тб. • Неограниченное количество контейнеров и блобов. • Контейнеры можно создавать/уничтожать в реальном времени.
Аккаунт Контейнер • Блоб • Страницы/ • Блоки Адресация блоба http://<account>.blob.core.windows.net/<container>/<blobname> • PIC01.JPG • Блок/страница • images • VID1.AVI • PIC02.JPG • contoso Блок/страница • videos
Контейнеры • Аналогично папке верхнего уровня • Может содержать до 100Тб файлов • Может содержать только блобы Каждый контейнер имеет права доступа: • Приватные • По умолчанию, для доступа нужен ключ аккаунта • Полное публичное чтение • Публичное только чтение
Контейнеры блобов • Много контейнеров на аккаунт • Специальный контейнер $root • Контейнер блобов • Контейнер содержит множество блобов • Определение доступа на уровне контейнера • Привязывание метаданных к контейнеру • Список блобов в контейнере • Включая метаданные блобов и MD5 • Нет поисковых запросов типа WHERE MetadataValue = ? • Пропускная способность блобов • Эффективно в случае одной партиции • Цель – 60Мб/сек на блоб
Загрузка блоба • Альтернативы • UploadFile • UploadText • UploadFromStream
Скачивание блоба • Альтернативы • DownloadText • DownloadByteArray • DownloadToFile
Контейнер & метаданные блоба • Простой словарь. • Для сохранения в хранилище нужно • вызвать SetMetadata().
Снапшоты • Создаёт read-only версию блоба
Два типа блобов • Блочный блоб • Для потоковых нагрузок • Каждый блоб – последовательность блоков • Каждый блок определяется Block ID • Размер ограничен 200Гб на блоб • Оптимистичный параллелизм через ETags • Страничный блоб • Для операций случайного чтения и записи • Каждый блоб – массив страниц • Каждая страница определяется отступом от начала блоба • Размер ограничен 1Тб на блоб • Оптимистичный или пессимистичный (блокировка) параллелизм через Leases
Загрузка блочного блоба Блоб blobName = “TheBlob.wmv”; PutBlock(blobName, blockId1, block1Bits); PutBlock(blobName, blockId2, block2Bits); ………… PutBlock(blobName, blockIdN, blockNBits); PutBlockList(blobName, blockId1,…,blockIdN); 10 GB Movie Block Id 2 Block Id N Block Id 1 Block Id 3 • Преимущества • Эффективная постоянная запись и повторы • Параллельная загрузка блоков без учета порядка Хранилище Windows Azure TheBlob.wmv TheBlob.wmv
Страничный блоб– случайные чтения/запись • Создайте MyBlob • Укажите размер блоба = 10 Гб. • Оплата только за страницы с данными • Фиксированный размер страницы = 512 байт • Операции случайного доступа • PutPage[512, 2048) • PutPage[0, 1024) • ClearPage[512, 1536) • PutPage[2048,2560) • GetPageRange[0, 4096) возвращает диапазоны [0,512) , [1536,2560) • GetBlob[1000, 2048) возвращает • Все 0 для первых 536 байт • Следующие 512 байт – данные из [1536,2048) 0 512 1024 1536 2048 Адресное пространство 2560 10 Гб
Shared Access Signatures • Гибкие права доступа к блобам и контейнерам • Простейший путь выдачи доступа пользователю на загрузку файлов в блобовый аккаунт • Подписка URL ключом хранилища, разрешение повышенных привилегий • Отзыв • Используйте короткие периоды, после которых производите повторную выдачу • Используйте политику уровня контейнера, которую можно удалить
Привязка к контейнеру Доступ на чтение на 10 минут Пример Доступ на запись на 10 минут Привязка к URI
Сеть доставки данных (CDN) • Сценарий • Для часто запрашиваемых блобов • Доступно из любой точки мира • Сеть доставка данных Windows Azure (CDN) предоставляет доставку данных с высокой пропускной способностью • 20+ узлов по всему миру (США, Европа, Азия, Австралия, Южная Америка), количество продолжает увеличиваться • Один и тот же пользовательский опыт использования вне зависимости от удаления от места расположения аккаунта хранилища • Стоимость • Узлы в США 15ц/Гб + 1ц/10,000 транз. • Остальные узлы 20ц/Гб + 1ц/10,000 транз. • Трафик узел хранилищаузел CDN по обычной цене
Доставка, Масштабирование и Производительность БОЛЕЕ 3 ТЕРАБИТ В СЕКУНДУ ПРОПУСКОЙ СПОСОБНОСТИ ИЗ 20+ УЗЛОВ ПО ВСЕМУ МИРУ С ДОСТУПНОСТЬЮ 99.95% ВРЕМЕНИ. СЕРВИС CDN АВТОМАТИЧЕСКИ МАСШТАБИРУЕТСЯ БЕЗ УЧАСТИЯ ПОЛЬЗОВАТЕЛЯ. БОЛЕЕ 3 ЛЕТ – ВНУТРИ MICROSOFT, ТЕПЕРЬ ДОСТУПНО И КЛИЕНТАМ WINDOWS AZURE.
Как это работает? http://civ5.blob.core.windows.net/demo/civ5demo.exe Публичный контейнер блобов Узел CDN 1 ! http://<guid>.vo.msecnd.net/demo/civ5demo.exe
Диски Windows Azure • Долговечные NTFS-тома, используемые экземплярами в Windows Azure • Используйте существующие NTFS API для доступа к примонтированному по сети диску • Используйте System.IO из .NET • Преимущества • Более простой перенос приложений в «облако», используя NTFS • Долговечность и сохранение данных • Диск Windows Azure – страничный блобв NTFS VHD • Подключайте страничный блоб по сети как диск NTFS • Локальный кэш для операций чтения на экземпляре • Все «смытые» и небуферизованные записи на диск сохраняются в страничный блоб
Возможности диска Windows Azure • Диск Windows Azure –страничный блоб, форматированный как том NTFS VHD • Размер диска – до 1Тб • Страничный блоб может быть примонтирован: • К одному экземпляру в один момент времени для чтения/записи • К многим экземплярам, используя read-only снапшоты • Экземпляр может динамически монтировать до 16 дисков • Remote Access через стандартный BlobUI • Нельзя удаленно монтировать диск. • Можно загружать VHD в страничный блоб, используя интерфейс блоба, и затем монтировать его как диск • Можно скачивать VHD как локальный файл и монтировать локально
Как работают диски Windows Azure ВМ Приложение Диск X: ОС Лиз Локальный кэш Сервис блобов Windows Azure DemoBlob Диск – форматированный страничный блоб, хранящийся в сервисе блобов При монтировании получается лизинг При монтировании указывается объем локального кэша на локальном хранилище «Смытые»/небуферизованные операции записи NTFS сохраняются в хранилище блобов перед возвращением в приложение Операции чтения могут происходить либо с локального кэша, либо с хранилища блобов (минуя кэш)
Пример клиентской библиотеки диска CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("CloudStorageAccount"); //Инициализация локального кэша для монтируемых на экземпляр дисков CloudDrive.InitializeCache(localCacheDir, cacheSizeInMB); //Создание «облачного» диска (страничного блоба) CloudDrive drive = account.CreateCloudDrive(pageBlobUri); drive.Create(1000 /* sizeInMB */); //Монтирование подключенного по сети диска к локальной файловой системе stringpathOnLocalFS = drive.Mount(cacheSizeInMB, DriveMountOptions.None); //Использование NTFS API для операций чтения/записи на диск … //Создание снапшота диска при монтировании для резервирования Uri snapshotUri = drive.Snapshot(); //Размонтирование диска drive.Unmount();
Failover с дисками • Необходимо выполнить команду NTFS Flush для сохранения данных • Используйте System.IO.Stream.Flush() • Диски чтения/записи защищены лизингом • 1-минутное истечение лизинга • Управляются Windows Azure OS Driver • Размонтируются при выполнении RoleEntryPoint.OnStop • При ошибке • Лизинг истекает через одну минуту • Диск перемонтируется на новый экземпляр
Руководство • Управляйте строками подключения/ключами в cscfg • Не распространяйте ключи, «оборачивайте» их в сервис • Планируйте стратегию создания аккаунтов и контейнеров • К аккаунту хранилища можно привязать домен
Гостевая книга в Windows Azure с использованием блобов демонстрация
Q & A соображения?
Изучая хранилище Windows Azure C:\WAPTK\Labs\ExploringWindowsAzureStorageVS2010 Сделайте упражнение 2. Время на лабораторную