Создание масштабируемых web приложений на windows azure

35
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ

Upload: riley-foreman

Post on 04-Jan-2016

48 views

Category:

Documents


7 download

DESCRIPTION

Создание масштабируемых web приложений на Windows Azure. Проблема масштабирования web приложения. Увеличение нагрузки на сервера. Увеличиваем количество инстансов ролей для обслуживания большего количества клиентов. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Создание  масштабируемых web  приложений на  Windows Azure

КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ

Page 2: Создание  масштабируемых web  приложений на  Windows Azure

СОЗДАНИЕ МАСШТАБИРУЕМЫХWEB ПРИЛОЖЕНИЙ НА WINDOWS AZURE

Page 3: Создание  масштабируемых web  приложений на  Windows Azure

ПРОБЛЕМА МАСШТАБИРОВАНИЯWEB ПРИЛОЖЕНИЯ

Page 4: Создание  масштабируемых web  приложений на  Windows Azure

Увеличение нагрузки на сервера

Увеличиваем количество инстансов ролей для обслуживания большего количества клиентов.

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

Page 5: Создание  масштабируемых web  приложений на  Windows Azure

Подход к решению задачи- Генерал! Мы можем увеличить количество танков?- Так точно, товарищ министр! Можем,а зачем?- Хм, ну ладно, тогда не будем увеличивать.

«Файна Юкрайна»

Page 6: Создание  масштабируемых web  приложений на  Windows Azure

ПОСТРОЕНИЯ МАСШТАБИРУЕМОГОWEB ПРИЛОЖЕНИЯ

Page 7: Создание  масштабируемых web  приложений на  Windows Azure

Что поможет нам построить масштабируемое приложение

Асинхронные механизмы работы

Использование очередей сообщений

Использование BLOB storage

Использование CDN

Использование Caching

Использование SQL Azure Federation aka

Sharding

Page 8: Создание  масштабируемых web  приложений на  Windows Azure

АСИНХРОННЫЕ МЕХАНИЗМЫ РАБОТЫ

Page 9: Создание  масштабируемых web  приложений на  Windows Azure

Синхронная обработкаprivate byte[] GetURLContents(string url){ var content = new MemoryStream(); var webReq = (HttpWebRequest)WebRequest.Create(url); using (var response = webReq.GetResponse()) { using (Stream responseStream = response.GetResponseStream()) { responseStream.CopyTo(content); } } return content.ToArray();}

Page 10: Создание  масштабируемых web  приложений на  Windows Azure

Асинхронная обработкаprivate async Task<byte[]> GetURLContentsAsync(string url){

var content = new MemoryStream();var webReq = (HttpWebRequest)WebRequest.Create(url);Task<WebResponse> responseTask = webReq.GetResponseAsync();using (WebResponse response = await responseTask){

using (Stream responseStream = response.GetResponseStream()){

Task copyTask = responseStream.CopyToAsync(content);await copyTask;

}}return content.ToArray();

}

Page 11: Создание  масштабируемых web  приложений на  Windows Azure

ВАЖНО!

Copy Local = True

Page 12: Создание  масштабируемых web  приложений на  Windows Azure

Стоимость async и await

Безвозмездно, т.е. даром.

http://msdn.microsoft.com/en-us/vstudio/gg316360

Page 13: Создание  масштабируемых web  приложений на  Windows Azure

ОЧЕРЕДИ СООБЩЕНИЙ

Page 14: Создание  масштабируемых web  приложений на  Windows Azure

Использование Queue

Очередь

Хвос

т

Голо

ва

Page 15: Создание  масштабируемых web  приложений на  Windows Azure

Стоимость Queue

Storage

• $0.125 за 1 GB данных

• $0.01 за 10 000 транзакций

Service Bus

• $0.01 за 10 000 сообщений

• $1.99 за 100 000 транзакцийAccess Control

Page 16: Создание  масштабируемых web  приложений на  Windows Azure

BLOB

Page 17: Создание  масштабируемых web  приложений на  Windows Azure

Azure web role

HTML

JPEG

Happyuser

Azureweb role

Stateless

Page 18: Создание  масштабируемых web  приложений на  Windows Azure

Azure web role + BLOB

HTML

JPEG

Happyuser

Azureweb role

AzureBLOB

Page 19: Создание  масштабируемых web  приложений на  Windows Azure

Стоимость BLOB

• $0.125 за 1 GB данных• $0.01 за 10 000 транзакций

Page 20: Создание  масштабируемых web  приложений на  Windows Azure

CONTENT DELIVERY NETWORK

Page 21: Создание  масштабируемых web  приложений на  Windows Azure

Что такое CDN

Page 22: Создание  масштабируемых web  приложений на  Windows Azure

Использование CDN• BLOB URL:

http://youraccount.blob.core.windows.net/images/image01.jpg

• CDN URL: http://someidentifier.vo.msecnd.net/images/image01.jpg

CDN может быть использован только для распространения контента публичных BLOB`ов

Page 23: Создание  масштабируемых web  приложений на  Windows Azure

Стоимость CDN

• $0.12 за 1 GB трафика из Европы иСеверной Америки

• $0.19 за 1 GB трафика из других локаций• $0.01 за 10,000 транзакций

Page 24: Создание  масштабируемых web  приложений на  Windows Azure

CACHING

Page 25: Создание  масштабируемых web  приложений на  Windows Azure

Использование Cache

web role 1

web role 2

Happyuser 1

Happyuser 2

Happyuser 3

SQL Azure

AppF

abric

Ca

che

AppF

abric

Ca

che

Page 26: Создание  масштабируемых web  приложений на  Windows Azure

Что можно кэшировать

Результаты запросов на выборку данных из

базы

Состояние сеанса

Поток вывода (output caching)

Любые другие данные

Page 27: Создание  масштабируемых web  приложений на  Windows Azure

Стоимость CachingРазмер Транзакций

(в час)Трафик

(MB в час)Количество

подключенийСтоимость

128 MB 400 000 1 400 10 45 $

256 MB 800 000 2 800 10 55 $

512 MB 1 600 000 5 600 20 75 $

1 GB 3 200 000 11 200 40 110 $

2 GB 6 400 000 22 400 80 180 $

4 GB 12 800 000 44 800 160 325 $

Page 28: Создание  масштабируемых web  приложений на  Windows Azure

SQL AZURE FEDERATION

Page 29: Создание  масштабируемых web  приложений на  Windows Azure

ИспользованиеSQL Azure Federation

web role 1

web role 2

Happyuser 1

Happyuser 2

Happyuser 3

SQL AzureFederated DB

SQL AzureNode 1

SQL AzureNode 2

SQL AzureNode 3

Page 30: Создание  масштабируемых web  приложений на  Windows Azure

Работа с SQL Azure Federation

CREATE FEDERATION blogs_federation (fed_id BIGINT RANGE)GO

USE FEDERATION blogs_federation (fed_id=-1) WITH RESET, FILTERING=OFFGO

CREATE TABLE blogs_tbl (blog_id bigint primary key,blog_title nvarchar(1024) not null,...

) FEDERATED ON (fed_id =blog_id)GO

ALTER FEDERATION blogs_federation SPLIT AT (fed_id=100)GO

Page 32: Создание  масштабируемых web  приложений на  Windows Azure

ИТОГО

Page 33: Создание  масштабируемых web  приложений на  Windows Azure

Масштабируемое решение

Happyuser

web 2

BLOB

CDN

web 1 Queue

worker 2

worker 1

SQL AzureFederated DBSQL

Node 2

SQLNode 1

Cache

Page 34: Создание  масштабируемых web  приложений на  Windows Azure

Вопросы?

Бойко АнтонData Art.NET разработчик[email protected]

Page 35: Создание  масштабируемых web  приложений на  Windows Azure

HOST TRACKERDEMO