Upload
-
View
1.752
Download
3
Tags:
Embed Size (px)
Citation preview
Сценарии хранения и обработки данных в Windows Azure
Резник ДенисРуководитель департамента Cloud разработкиDigital Cloud Technologies
Решение задач с Windows Azure
Создание приложений Windows Azure
Знакомство с Windows Azure
Карта ТрекаWindows Azure Keynote
Windows Azure Q&A
Использование Azure ACS для решения задач аутентификации пользователей
Windows Azure Internals
Media Services - обработка медиа
Безопасность Windows Azure
Сценарии хранения и обработки данных в Windows Azure
Миграция имеющихся приложений в Windows AzureService Bus – связь облакас сервисами предприятия
Введение в Windows Azure Virtual MachinesРазвертывание Active Directory в Windows AzureМиграция приложения ASP.NET на Windows Azure
Продвинутые техники выявления проблем для решений на базе Windows AzureРазвертывание фермы SharePoint в Windows Azure
Лабораторные работы
Содержание
Non-Relational dataWindows Azure Storage
BlobsQueuesTables
Big DataHDInsight
Relational dataSQL Azure
Развитие платформы Azure
Azure Storage
Blobs, Queues, Tables, Storage Internals
Azure Storage
Сколько объектов хранится в Azure Storage?
Июнь 2011 Сентябрь 2011
Декабь 2011 Март 2012 Июнь 20120
0.5
1
1.5
2
2.5
3
3.5
4
4.5
0.941.33
1.7
2.89
4.03
Axis Title
Кол
-во о
бъ
ектов в
тр
ил
ли
он
ах
Источник: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/07/20/windows-azure-storage-4-trillion-objects-and-counting.aspx
Сколько запросов обрабатывает Azure Storage?
Июнь 2011 Сентябрь 2011
Декабь 2011 Март 2012 Июнь 20120
100000200000300000400000500000600000700000800000900000
1000000
average peak
Кол
-во з
ап
росов в
секун
ду
Источник: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/07/20/windows-azure-storage-4-trillion-objects-and-counting.aspx
Сделано в России
Некоторые клиенты Windows Azure
Windows Azure Storage Account
North Central USNorthern Europe
Western Europe East Asia
South East Asia
US Europe Asia
Storage account можно создать в любом датацентре Windows Azure:
South Central US
West US East US
Windows Azure Storage
TablesСтруктурированное хранилище данных. Таблица – набор сущностей.
QueuesНадёжное хранение и доставка сообщений в приложении.
BlobsПростые файлы и метаданные связанные с ними
DrivesNTFS диски для использования в Windows Azure приложениях.
Container Blobs
EntitiesTable
https://<account>.blob.core.windows.net/<container>
https://<account>.table.core.windows.net/<table>
MessagesQueue
Azure Storage Concepts
https://<account>.queue.core.windows.net/<queue>
Account
Azure Blob – Блобы и Контейнеры
BlobФайл в облаке
ContainerГруппировка файловЭмуляция вложенностиКонтейнер $root
http://myaccount.blob.core.windows.net/mycontainer/myblob
MyContainer MyBlob
MyContainer Path/MyBlob
http://myaccount.blob.core.windows.net/mycontainer/path/myblob
http://myaccount.blob.core.windows.net/$root/myblobhttp://myaccount.blob.core.windows.net/myblob
Создание контейнераstring storageConnectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("files");container.CreateIfNotExists();
BlobContainerPermissions publicPermissions = new BlobContainerPermissions{
PublicAccess = BlobContainerPublicAccessType.Blob};container.SetPermissions(publicPermissions);
Создание блоба и листинг контейнераusing (Stream stream = System.IO.File.OpenRead(@"D:\blob.txt")){
CloudBlockBlob blob = container.GetBlockBlobReference("blob.txt");blob.UploadFromStream(stream);
CloudBlockBlob blob2 = container.GetBlockBlobReference("demo/blob2.txt");
blob2.UploadFromStream(stream);
CloudBlockBlob blob3 = container.GetBlockBlobReference("demo/blob3.txt");
blob3.UploadFromStream(stream);}
foreach (IListBlobItem item in container.ListBlobs("demo/")){
// Do some action}
TheBlob.wmv
Block Blob
10 GB Movie
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
ПреимуществоПродолжение загрузкиПараллельная загрузка и загрузка в произвольном порядке
THE BLOB
Windows AzureStorage
Загрузка большого файла
Page Blob
Create MyBlobФиксированный размер страницы = 512 bytesRandom Access Operations
PutPage[512, 2048)PutPage[0, 1024)ClearPage[512, 1536)PutPage[2048,2560)
GetPageRange[0, 4096) returns valid data ranges:
[0,512) , [1536,2560)GetBlob[1000, 2048) returns
All 0 for first 536 bytesNext 512 bytes are data stored in [1536,2048)
0
10 GB
512
1024
1536
2048
2560
10 G
B A
dd
ress S
pace
pic1.jpg
Windows Azure CDN
Включение CDN:Регистрируем 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
TTL Content Delivery Network
Windows Azure Blob Service
EdgeLocation
EdgeLocation
EdgeLocation
Azure Queue – Очереди и сообщения
QueueНеограниченное кол-во сообщений
MessageXML до 64 КбСрок жизни – неделяПосле того как приложение забрало сообщение
из очереди. Она становится невидимым для других
обработчиковЕсть возможность продлевать время доступностиСохранение состояния сообщений
Azure Queue – Жизненный цикл сообщения
Azure Queue
Web Role
Web Role
Worker Role
Worker Role
Expires @ 7:05AM
7:00 AM
7:04 AM
Получение сообщения с 5 минутным visibility timeoutУвеличение visibility timeout на 5 минут
Expires @ 7:09AM7:07 AM
7:09 AM
Получение прогресса и продолжение обработки
Прогресс обработки периодически сохраняется в сообщении
7:05
7:09
7:14
Текущее время
Постановка и получение сообщенийCloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("booking");queue.CreateIfNotExists();
CloudQueueMessage message = new CloudQueueMessage("Flight: Kharkov - Moskow");queue.AddMessage(message);
...
CloudQueueMessage message = queue.GetMessage();
queue.DeleteMessage(message);
Azure Table - EntityEntity может иметь до 255 свойствДо 1Мб для сущности
Обязательные свойстваPartitionKey & RowKey (для индексирования)Однозначно определяют сущностьОпределяют порядок сортировки
Timestamp Optimistic ConcurrencyРеализуется посредством HTTP Etag
Нет фиксированной схемы для остальных свойствКаждая сущность хранится как key-value pairСвойства должны быть стандартных типов .NET:String, binary, bool, DateTime, GUID, int, int64, 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’
Выборка данных из Table StorageCloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("people");
TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey",
QueryComparisons.Equal, "Smith"));
foreach (CustomerEntity entity in table.ExecuteQuery(query)){
Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey,
entity.Email, entity.PhoneNumber);}
Azure Storage
Резник ДенисHead of Cloud DevelopmentDigital Cloud Technologies
Работа с Azure Storage
Partitions
EntitiesTableName + PartitionKey
BlobsContainerName + BlobName
MessagesQueueName
Distributed File System
Архитектура Azure Storage
LB
FE FEFE
Partition Server
Partition Server
Partition Server
Partition Server
Partition Masters
«In "Avatar," every blade of grass, every cloud in the sky, every vine in the jungle existed digitally and had to be stored somewhere.»
Jon Landau, Producer
Источник: http://www.microsoft.com/microsoftservices/en/uk/article_Microsoft_Role_In_Avatar.aspx
«We developed an interactive game where users try to navigate a course maze in a Volvo car in the fastest time and using the shortest route.»
David Holecek, Digital Strategy Manager at Volvo Car Corporation
Более миллиона уникальных пользователей посетили сайт компании в период проката фильма в 2010 году.
Около 400 000 активных пользователей игры
Источник: http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000008490
Windows Azure Storage в проектах Microsoft
Facebook and TwitterNear Real-Time Search
Microsoft Zune Media Storage and Delivery
Telemetry for KinectGame Saves in Cloud
Big Data
Hadoop in Azure
Azure HDInsight
ЗАГРУЗКА ДАННЫХ
Server
ServerServer
Как это работает?
Files
Server
ОБРАБОТКА ДАННЫХ
Как это работает?
// Map Reduce function in JavaScript
var map = function (key, value, context) {var words = value.split(/[^a-zA-Z]/);for (var i = 0; i < words.length; i++) {
if (words[i] !== "")context.write(words[i].toLowerCase(),1);}}};
var reduce = function (key, values, context) {var sum = 0;while (values.hasNext()) {sum += parseInt(values.next());
}context.write(key, sum);};
ServerServer
ServerServer
RUNTIME
Code
MapReduce – Workflow
Hadoop Architecture
The Hadoop EcosystemETL Tools BI Reporting RDBMS
Reference: Tom White’s Hadoop: The Definitive Guide
OPERATIONAL DATA
Traditional E-Commerce Data Flow
NEW USER REGISTRY
NEW PURCHASE
NEW PRODUCT
Excess Data
Logs
ETL Some Data
Data Warehouse
OPERATIONAL DATA
New E-Commerce Big Data Flow
Raw Data“Store it All” Cluster
Raw Data“Store it All” Cluster
NEW USER REGISTRY
NEW PURCHASE
NEW PRODUCT
Data Warehouse
Logs
Logs
Язык запросов HiveQL
CREATE TABLE logs(t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
LOAD DATA LOCAL INPATH 'sample.log' OVERWRITE INTO TABLE logs;
SELECT t5 AS sev, COUNT(*) AS cnt FROM logs WHERE t5 LIKE '[%' GROUP BY t5;
Azure HDInsigt
Резник ДенисHead of Cloud DevelopmentDigital Cloud Technologies
Работа с Azure HDInsight
Klout
“Klout chose the best of both worlds by marrying the Microsoft BI platform with Hadoop and Hive.”
David Mariani Vice President of Engineering at Klout
Источник: http://www.microsoft.com/casestudies/Microsoft-SQL-Server-2012-Enterprise/Klout/Data-Services-Firm-Uses-Microsoft-BI-and-Hadoop-to-Boost-Insight-into-Big-Data/710000000129
“We take in raw data and make it into something that is actionable for our consumers, brands, and partners.”
David Mariani Vice President of Engineering at Klout
SQL Azure
SQL Azure Internals, SQL Azure Federations
SQL Azure
Концепция SQL Azure
Account
• Работа с порталом
• Инструмент оплаты
Server
• Информация о базах данных
• Аутентификация и безопасность
Database
• Аналог SQL Server базы данных
• Содержит таблицы, процедуры, индексы, и т.п.
Gateway Gateway Gateway Gateway Gateway Gateway
Gateway: TDS protocol gateway, enforces AUTHN/AUTHZ policy; proxy to CloudDB
SQL Azure Network Topology Application
InternetAzure Cloud
LB
TDS (tcp)
TDS (tcp)
TDS (tcp)
Applications use standard SQL client libraries: ODBC, ADO.Net, PHP, …
Load balancer forwards ‘sticky’ sessions to TDS protocol tier
Security Boundary
SQL SQL SQL SQL SQLSQL
Scalability and Availability: Fabric, Failover, Replication, and Load balancing
Запрос к базе SQL AzureTDS Gateway
Front-end NodeProtocol Parser
Gateway Logic
Master Cluster
Master Node
Master Node Components
1
2
3
5 67
Scalability and Availability: Fabric, Failover, Replication, and Load balancingScalability and Availability: Fabric, Failover, Replication, and Load balancing
4
8
TDS Session
Backend Node 1SQL Instance
SQL DB
Backend Node 2SQL Instance
SQL DB
Backend Node 3SQL Instance
SQL DB
Масштабирование Базы Данных (Scale Out)«Сложнее всего масштабировать базу данных»
Варианты масштабирования базы данныхРепликация
Дублирование данных на серверах
ШардингРаспределение данных между серверами
DataData...
Концепция Federations
Federation RootБаза данных в которой находится объект Federation
FederationFederation – объект Root базы данных, который знает как распределены данные между шардами
Federation Member (aka Шард): Отдельная база данных SQL Azure. Каждая такая база данных, хранит в себе часть общего набора данных.
SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation
Federation MembersFederation Root
Federations
Концепция Federations
Federation Distribution KeyКлюч, используемый для распределения данных внутри федерации. Он определяет тип данных ключа (uniqueidentifier, int, bigint, varbinary), и способ распределения данных (range). Его значение определяет Federation Member, на котором будут находиться данные.
Atomic UnitВсе данные имеющие одинаковый Federation Distribution Key. Например это все строки федеративных таблиц, которые имеют один федеративный ключ. Эта коллекция данных гарантированно будет находиться на одном и том-же шарде (federation member).
SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation
Federation MembersFederation Root
Federations member: Range [1000, 2000)
AUPK=5
AUPK=25
AUPK=35
AUPK=5
AUPK=25
AUPK=35
AUPK=1005
AUPK=1025
AUPK=1035
Atomic Units
Концепция Federations
Federated TablesСодержат кусочек распределённых данные. Federated tables создаются в federation members и содержат federation distribution key.
Reference TablesСодержат данные необходимые для lookup запросов. Создаются в Federation Member. Данные таблиц реплицируются между всеми Federation Members.
Central TableТаблицы, созданные в federation root базе данных. Используются в основном как набор метаданных.
SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation
Federation membersUser Database and Federation root
Federations
Federated Tables
Central Tables
Reference Tables
Маршрутизация
Приложение всегда вначале соединяется с ROOT databaseUSE FEDERATION – переключает в контекст конкретного federation member Данные с одинаковым значением federation key (atomic unit) всегда находятся в пределах одного federation member
SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation
Range Distribution [min,1000, 2000, 3000 ….. 5000, 10000, Max]
USE FEDERATION CustomerFederation(customer_id = 5075) …
МаршрутизацияMember Connections
FILTERING=OFFРаботаем с данными всего Federation member
Неограниченный доступ к данным базы: Всё равно что соединиться по имени БДDDL, DML и доступ ко всем Atomic Units внутри Federation Member
Хорошо для…Management Tasks: Обновление схемы данныхFan-out Querying – получение данных нескольких
atomic units
Microsoft ConfidentialMicrosoft Confidential
SalesDB
member: Range [100,200)
Customers(federated)
CustomerFederation Orders(federated)
Products(referece)
CustomerFederation
Customer_id=55
USE FEDERATION CustomerFederation(cid = 55) WITH RESET, FILTERING=OFFGO
FILTERING=ONРаботаем с данными одного Atomic Unit
Полностью доступны данные Reference TablesЗапрещены любые изменения глобального состояния Federation Member
Хорошо для…Безопасной модели разработкиПредотвращения утечки данных
МаршрутизацияFiltering Connections
Microsoft Confidential
SalesDB
member: Range [100,200)
Customers(federated)
CustomerFederation Orders(federated)
Products(referece)
CustomerFederationCustomer_id=55
Customer_id=55
USE FEDERATION CustomerFederation(cid = 55) WITH RESET, FILTERING=ONGO
Разделение шарда
Разделение шарда делается при помощи T-SQL команды SPLIT. Разделение шарда происходит без остановки работы приложения. Данные шарда недоступны в течении очень короткого промежутка времени.
SalesDBOrders_federationCustomerFederationerationCustomerFederation
Range Distribution [min,1000, 2000, 3000 ….. 5000, 10000, Max]
ALTER FEDERATION CustomerFederation SPLIT AT (tenant_id=7500)
SalesDBCustomerFederationerationCustomerFederationerationCustomerFederation
SPLIT в Действии
Appmember: Range [100,200)
Customer(federated)
CustomerAddress
(federated)
PostalCode(reference)
Member: Range [100,150) Member: Range [150,200)
SQL Azure
Резник ДенисHead of Cloud DevelopmentDigital Cloud Technologies
Multi-Tenant приложение
Большая гибкость“We can be selling a few hundred tickets an hour for most of the week, but when a big event goes on sale at 9:00 in the morning, we get an enormous spike in load against our application.”
Matthew Davey, Founder, TicketDirect
Источник: http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000005890
Архитектура TicketDirect
SQL Azure
Castellan
Castellan Venue
DB
Castellan Venue DB’s
Venue 1Partition(s
)
Castellan Venue
DB
Castellan Venue DB’s
Venue 2 Partition(
s)
Castellan Venue
DB
Castellan Venue DB’s
Venue N Partition(s
)
One application DB, many venue DB’s – each partitioned in to many parts (40+)
...
Windows Azure Roles
http:// TicketDirect .* Dynamic Worker
(tasks uploaded as blobs)
Partitioner Worker
Windows Azure StorageQueues for communication between clients and roles
-- - --- - -
-- - --- - -
Tables to record server & partition information
Blobs to store web and worker role resources
Client Applications
Castellan.old (VB6)
Service Bus
WCF
On PremisesSQL Server
Castellan Venue
Distributed Cache Worker
Castellan.Azure• Box Office sales• Ticket Printing • System Administration • Venue/Event Management• Partitioning
Azure Services
SQL Azure Reporting, Azure Media Services
Сервисы Windows Azure, использующие хранилище данных Azure
SSRS Windows Azure SQL Reporting
Reporting Services
Azure infrastructure
SQL Azure connectivity
Windows Azure portal
Datacenters worldwide
Architecture – What’s Under The Hood
Load Balancer
Gateway GatewayGateway
RS InstanceMonitor/Comm[SLA & Usage][Performance][Traces & Logs]
RS Engine
RS InstanceMonitor/Comm[SLA & Usage][Performance][Traces & Logs]
RS Engine
RS InstanceMonitor/Comm[SLA & Usage][Performance][Traces & Logs]
RS Engine
SQL Database
RS GPMTenant Data
Operations
Directory Services
Allocation + Service
Customer Service
SLA Conformation
Load Balancing
Billing/Usage
Monitoring[Alerting]
[Performance][Traces & Logs]
http://server.reporting.windows.net/reports/report.rdl
SQL Azure Reporting
Резник ДенисHead of Cloud DevelopmentDigital Cloud Technologies
Генерация отчёта в облаке
Azure Media Services – Видеотренды
35% Интернет трафика - видео, 80% к 2015Рост ~50% в год
TВ IP TВ
~50 млн. телевизоров с Интернет продано в 2012
150 млн.+ телефонов с доступом к ИнтернетБолее 66 млн. консолей Xbox
Поставщикам нужен доступ к новым потребителям
Трафик
Потребители
Azure Media ServicesНабор компонентов для создания готовых медиа-решений в облаке
Encoding Analytics
Windows Azure Media Services
LiveStreaming
FormatConversio
n
Content Protection
On-DemandStreaming
Advertising
Ingestion
Как использовать Media Services?
BroadcastersNetwork OperatorsContent OwnersEnterprises
Готовое решение по доставке видео до потребителя
Encoding Analytics
Windows Azure Media Services
LiveStreaming
FormatConversio
n
Content Protection
On-DemandStreaming
Advertising
Ingestion
Все популярные сценарии и устройства
Как использовать Media Services?
Rental | Subscription | Purchase | Free
Windows Azure Media Services
Windows Azure CDN
3rd Party CDN
LiveStreaming
On-DemandStreaming
Files
AccessPolicies
Content
Keys
Видео и аудио файлы, сохранённые вAzure Blob Storage
Политики для locators (используются для доступа к контенту)
Информация для шифрования assets. По умолчанию шифрование включено
Asset
Azure Media Services - КонцепцияObjects
Job
Task
Task
Task
КонцепцияDescriptors
Jobs
Описание действия, которое нужно произвести. Может быть поставлено на расписание и отменено.
Tasks
Каждый job имеет несколько tasksОпределяет workflow – зависимости, входящий и исходящий наборыАтомарное действие, которое должно быть обработано media processor
Azure Media Services
Резник ДенисHead of Cloud DevelopmentDigital Cloud Technologies
Загрузка, перекодирование и стриминг видео
Источник: http://weblogs.asp.net/scottgu/archive/2012/08/21/windows-azure-media-services-and-the-london-2012-olympics.aspx
Олимпийские игры 2012 в Лондоне17 дней прямой трансляции, начиная с 25 июля
Первая прямая трансляция события такого масштаба, использующая облако
20 стран - потребителей
Основные платформы: Веб и Мобильные• Silverlight, iOS, Windows Phone 7, Android• 28 каналов в Дублине, 5 в Чикаго, 2 для Южной Америки• Каждый канал имел резервный канал
Более 2200 часов видео• 500 виртуальных машин и 3000 ядер
Summary
Non-Relational dataWindows Azure Storage
BlobsQueuesTables
Big DataHDInsight
Relational dataSQL Azure
Развитие платформы Azure
Ресурсы
Azure Storage Internalshttp://sigops.org/sosp/sosp11/current/2011-Cascais/printable/11-calder.pdf
Map-Reduce Whitepaperhttp://research.google.com/archive/mapreduce-osdi04.pdf
SQL Azure Internalshttp://social.technet.microsoft.com/wiki/contents/articles/1695.inside-windows-azure-sql-database.aspx
Microsoft Case Studieshttp://www.microsoft.com/casestudies
Обратная связь
Ваше мнение очень важно для нас. Пожалуйста, оцените сессию, заполните анкету и сдайте ее при выходе из зала
Спасибо!
Вопросы и контактная информация
Код сессии Резник Денис
Head of Cloud [email protected] http://reznik.uneta.com.ua @denisreznik
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to
be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS
PRESENTATION.