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

Preview:

DESCRIPTION

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

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sharding

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

Синхронная обработка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();}

Асинхронная обработка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();

}

ВАЖНО!

Copy Local = True

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

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

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

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

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

Очередь

Хвос

т

Голо

ва

Стоимость Queue

Storage

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

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

Service Bus

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

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

BLOB

Azure web role

HTML

JPEG

Happyuser

Azureweb role

Stateless

Azure web role + BLOB

HTML

JPEG

Happyuser

Azureweb role

AzureBLOB

Стоимость BLOB

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

CONTENT DELIVERY NETWORK

Что такое CDN

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

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

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

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

Стоимость CDN

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

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

CACHING

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

web role 1

web role 2

Happyuser 1

Happyuser 2

Happyuser 3

SQL Azure

AppF

abric

Ca

che

AppF

abric

Ca

che

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

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

базы

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

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

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

Стоимость 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 $

SQL AZURE FEDERATION

Использование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

Работа с 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

ИТОГО

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

Happyuser

web 2

BLOB

CDN

web 1 Queue

worker 2

worker 1

SQL AzureFederated DBSQL

Node 2

SQLNode 1

Cache

Вопросы?

Бойко АнтонData Art.NET разработчикboyko.ant@live.comboykoant.blogspot.com

HOST TRACKERDEMO

Recommended