View
49
Download
7
Category
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
Стоимость SQL Azure Federation
Безвозмездно, т.е. даром.
http://social.technet.microsoft.com/wiki/contents/articles/2281.federations-building-scalable-elastic-and-multi-tenant-database-solutions-with-sql-azure.aspx
ИТОГО
Масштабируемое решение
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