1 / 35

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Проблема масштабированияweb приложения

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

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

  5. построения масштабируемогоweb приложения

  6. Что поможет нам построить масштабируемое приложение Асинхронные механизмы работы Использование очередей сообщений Использование BLOB storage Использование CDN Использование Caching Использование SQL Azure Federation aka Sharding

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

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

  9. Асинхронная обработка private async Task<byte[]>GetURLContentsAsync(string url) { varcontent = new MemoryStream(); varwebReq = (HttpWebRequest)WebRequest.Create(url); Task<WebResponse> responseTask = webReq.GetResponseAsync(); using (WebResponse response = awaitresponseTask) { using (Stream responseStream = response.GetResponseStream()) { Task copyTask = responseStream.CopyToAsync(content); await copyTask; } } return content.ToArray(); }

  10. ВАЖНО! Copy Local = True

  11. Стоимость asyncи await Безвозмездно, т.е. даром. http://msdn.microsoft.com/en-us/vstudio/gg316360

  12. Очереди сообщений

  13. Использование Queue Хвост Очередь Голова

  14. Стоимость Queue Storage Service Bus $0.01 за 10 000 сообщений $1.99 за 100 000 транзакцийAccess Control • $0.125 за1 GB данных • $0.01 за 10 000 транзакций

  15. BLOB

  16. Azure web role Happy user Stateless HTML JPEG Azure web role

  17. Azure web role + BLOB JPEG Azure BLOB Happy user HTML Azure web role

  18. Стоимость BLOB $0.125 за 1 GB данных $0.01 за 10 000 транзакций

  19. Content delivery network

  20. Что такое CDN

  21. Использование CDN • BLOB URL: http://youraccount.blob.core.windows.net/images/image01.jpg • CDN URL: http://someidentifier.vo.msecnd.net/images/image01.jpg CDN может быть использован только для распространения контента публичных BLOB`ов

  22. Стоимость CDN $0.12 за 1GB трафика изЕвропы иСеверной Америки $0.19 за 1GB трафика из других локаций $0.01 за 10,000 транзакций

  23. Caching

  24. Использование Cache AppFabric Cache AppFabric Cache Happy user 1 Happy user2 Happy user3 SQL Azure web role 1 web role 2

  25. Что можно кэшировать Результаты запросов на выборку данных из базы Состояние сеанса Поток вывода (output caching) Любые другие данные

  26. Стоимость Caching

  27. SQL Azure federation

  28. ИспользованиеSQL Azure Federation Happy user 1 Happy user2 Happy user3 SQL Azure Federated DB SQL Azure Node 1 SQL Azure Node 2 SQL Azure Node 3 web role 1 web role 2

  29. Работа с SQL Azure Federation CREATE FEDERATION blogs_federation(fed_idBIGINT RANGE) GO USE FEDERATION blogs_federation (fed_id=-1) WITH RESET, FILTERING=OFF GO CREATE TABLE blogs_tbl ( blog_idbigintprimary key, blog_titlenvarchar(1024) not null, ... ) FEDERATED ON (fed_id=blog_id) GO ALTER FEDERATION blogs_federation SPLIT AT (fed_id=100) GO

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

  31. итого

  32. Масштабируемое решение Queue worker 1 BLOB Happy user CDN worker 2 Cache SQL Node 1 web 2 web 1 SQL Azure Federated DB SQL Node 2

  33. Вопросы? Бойко Антон Data Art .NET разработчик boyko.ant@live.com boykoant.blogspot.com

  34. DEMO HOST TRACKER

More Related