teched 2012 - Сценарии хранения и обработки данных в windows azure

Post on 20-May-2015

1.753 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Сценарии хранения и обработки данных в 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

Загрузка, перекодирование и стриминг видео

Олимпийские игры 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

Обратная связь

Ваше мнение очень важно для нас. Пожалуйста, оцените сессию, заполните анкету и сдайте ее при выходе из зала

Спасибо!

Вопросы и контактная информация

Код сессии Резник Денис

Head of Cloud Developmentdenisreznik@live.ru 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.

top related