Построение высоконагруженных web-приложений на базе Windows Azure<br />Фещенко Александр<br />feschenko.alex@gmail.com<br ...
Высоконагруженные web-приложения<br />Что я имею ввиду:<br /><ul><li>Глобальная аудитория, низкое время ответа
Возможность масштабирования для обработки большого количества одновременных запросов
Высокие требования к пропускной способности</li></ul>Compute<br />План:<br /><ul><li>Асинхронная модель программирования
Управление доступом к данным
Настройка производительности приложения</li></li></ul><li>Асинхронная модель программирования<br />
Синхронные приложения<br />Один запрос обрабатывается одним потоком<br /><ul><li>Блокируется на время выполнения «работы»,...
Асинхронная модель в облаке<br />Асинхронная модель применительна как к локальным так и к облачным приложениям <br />Для а...
Изящная обработка падений отдельных экземпляров роли</li></ul>Windows Azure Storage и SQL Azure поддерживают асинхронные в...
WCF Data Services
LINQ to SQL
Plain Old ADO.NET</li></li></ul><li>Управление доступом к данным<br />
Управление доступом к данным<br />Как эффективно передать данные клиенту и от него ?<br /><ul><li>Существует много типов д...
Медиа (изображения, видео и др.)
Бинарные данные (XAP, MSI, ZIP и др.)
Текстовые форматы (XML)</li></li></ul><li>Shared Access Signatures<br />Предназначены для прямого доступа к защищенным рес...
Глобальный доступ к блобам<br />Получайте доступ к открытым блобам посредством Windows AzureCDN<br />CDN<br />Blob Storage...
Content Delivery Network<br />~100 глобально распределенных дата-центра<br />Quincy, WA<br />Chicago, IL<br />San Antonio,...
Windows Azure CDN – с чего начать<br />Разрешить CDN доступ с вашего аккаунта Windows Azure<br /><ul><li>Выполняется на de...
Это сформирует новый формат доступа к открытым блобам посредством CDN
Одинаковый контент, 2 точки доступа
CDN URL: http://azXXXX.vo.msecnd.net/images/myimage.png
WA Storage URL: http://myacct.blob.core.windows.net/images/myimage.png</li></ul>CNAME маппинг применительно к CDN URL’s<br...
Upcoming SlideShare
Loading in...5
×

Построение высоконагруженных приложений на базе Windows Azure

1,600

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,600
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Построение высоконагруженных приложений на базе Windows Azure

  1. 1. Построение высоконагруженных web-приложений на базе Windows Azure<br />Фещенко Александр<br />feschenko.alex@gmail.com<br />http://feschenkoalex.blogspot.com<br />Twitter: FeschenkoAlex<br />
  2. 2. Высоконагруженные web-приложения<br />Что я имею ввиду:<br /><ul><li>Глобальная аудитория, низкое время ответа
  3. 3. Возможность масштабирования для обработки большого количества одновременных запросов
  4. 4. Высокие требования к пропускной способности</li></ul>Compute<br />План:<br /><ul><li>Асинхронная модель программирования
  5. 5. Управление доступом к данным
  6. 6. Настройка производительности приложения</li></li></ul><li>Асинхронная модель программирования<br />
  7. 7. Синхронные приложения<br />Один запрос обрабатывается одним потоком<br /><ul><li>Блокируется на время выполнения «работы», после чего возвращают ответ и снова становится доступным</li></ul>SQL Azure<br />Веб приложение<br />“Работа” #1<br />Входящий запрос #1<br />Средний уровень<br />Блокировка<br />Поток<br />Ответ #1<br />WA Storage<br />Thread<br />Ответ #1<br />Compute<br />Ожидание…<br />Входящий запрос #2<br />Время идет…<br />Стеки потоков – структуры для обработки входящих запросов<br />Большинство потоков простаивают впустую<br /><ul><li>Увеличение количества потоков для повышения производительности – тяжеловесный подход</li></li></ul><li>Асинхронная модель программирования<br />Веб приложение<br />SQL Azure<br />“Работа” #1<br />Клиент #1<br />Средний уровень<br />Ответ #1<br />WA Storage<br />Ответ #1<br />Поток<br />Поток<br />Клиент #2<br />“Работа” #2<br />Контекст<br />Ответ #2<br />Ответ #2<br />Клиентские запросы явно отслеживаются во внутренних структурах приложения<br /><ul><li>Операции над контекстом должны быть идемпотентны или транзакционны</li></ul>Потоки блокируются ненадолго, поэтому большее количество потоков гарантирует большую пропускную способность<br />
  8. 8. Асинхронная модель в облаке<br />Асинхронная модель применительна как к локальным так и к облачным приложениям <br />Для асинхронного взаимодействия между ролями вашего приложения очень удобна технология Windows Azure Storage Queues<br /><ul><li>Встроенная балансировка нагрузки
  9. 9. Изящная обработка падений отдельных экземпляров роли</li></ul>Windows Azure Storage и SQL Azure поддерживают асинхронные вызовы<br /><ul><li>ADO.NET Entity Framework
  10. 10. WCF Data Services
  11. 11. LINQ to SQL
  12. 12. Plain Old ADO.NET</li></li></ul><li>Управление доступом к данным<br />
  13. 13. Управление доступом к данным<br />Как эффективно передать данные клиенту и от него ?<br /><ul><li>Существует много типов данных и каждый из них имеет свои особенности</li></ul>Blob<br />Storage<br />Приложение<br />Приложение<br />Как можно больше снижайте эффект своего присутствия<br /><ul><li>Отправляйте клиентов напрямую к Blob Storage за статическим контентом
  14. 14. Медиа (изображения, видео и др.)
  15. 15. Бинарные данные (XAP, MSI, ZIP и др.)
  16. 16. Текстовые форматы (XML)</li></li></ul><li>Shared Access Signatures<br />Предназначены для прямого доступа к защищенным ресурсам<br /><ul><li>Срок действия SAS заканчивается по истечению определенного промежутка времени либо по требованию</li></ul>2. Сервис формирует подпись на основе секретного ключа<br />1. Я Боб, хочу получить доступ к X<br />Приложение<br />Ключ<br />3. Сервис возвращает SAS подписанный HTTPS URL<br />Blob Storage<br />4. Боб использует SAS для доступа к Xнапрямую из Blob Storage<br />Защищенный блоб (или платный)<br />X<br />
  17. 17. Глобальный доступ к блобам<br />Получайте доступ к открытым блобам посредством Windows AzureCDN<br />CDN<br />Blob Storage<br />Ближайшая точка присутствия<br />Открытый контейнер<br />X<br />X<br />DNS имя определяет ближайшую точку присутствия<br />Снижает время ожидания и нагрузку на центральное хранилище<br />
  18. 18. Content Delivery Network<br />~100 глобально распределенных дата-центра<br />Quincy, WA<br />Chicago, IL<br />San Antonio, TX<br />Dublin, Ireland<br />Generation 4 DCs<br />
  19. 19. Windows Azure CDN – с чего начать<br />Разрешить CDN доступ с вашего аккаунта Windows Azure<br /><ul><li>Выполняется на dev-портале Windows Azure
  20. 20. Это сформирует новый формат доступа к открытым блобам посредством CDN
  21. 21. Одинаковый контент, 2 точки доступа
  22. 22. CDN URL: http://azXXXX.vo.msecnd.net/images/myimage.png
  23. 23. WA Storage URL: http://myacct.blob.core.windows.net/images/myimage.png</li></ul>CNAME маппинг применительно к CDN URL’s<br />Адаптивный стриминг также можно настроить на работу с CDN<br /><ul><li>http://blog.smarx.com/posts/smooth-streaming-with-windows-azure-blobs-and-cdn</li></li></ul><li>Кеширование в памяти<br />Кешируйте «горячие» данные в памяти для предотвращения медленного обращения к базе данных<br /><ul><li>Например, товары в каталоге</li></ul>Кеширование в памяти<br />SQL Azure<br />SQL Azure<br />Приложение<br />Table Storage<br />Table Storage<br />Кеширующий слой поможет Вам снизить время ожидания и стоимость<br /><ul><li>Низкое время ожидания и высокая пропускная способность (особенно под нагрузкой)</li></li></ul><li>Архитектура распределенного кеширования<br />Несколько экземпляров web-роли могут быть клиентами кэша be cache clients<br />Клиенты видят кэш в виде единого унифицированного представления<br />Кеширующий слой<br />Кеширующий слой распределяет данные между несколькими хостами<br />
  24. 24. Windows Azure AppFabricСaching<br />Что это?<br /><ul><li>Windows Server AppFabric Cache – распределенное кеширование для собственных серверов
  25. 25. CTP релиз на PDC
  26. 26. В ближайшем будущем полный паритет между облачной версией и стандартной</li></ul>Прекрасная производительность<br /><ul><li>Высоко масштабируемый 64-х битный
  27. 27. Высокая отказоустойчивость, низкое время ответа</li></li></ul><li>Преимущества AppFabric Caching<br />Прост в администрировании<br />С легкостью интегрируется в существующие приложения<br /><ul><li>ASP.NET Session State и Output Cache провайдеры</li></ul>Такой же интерфейс управления как и у Windows Server AppFabric Cache<br />Способен кешировать любой сериализируемый объект<br /><ul><li>Никаких ограничений на размер объекта
  28. 28. Возможность использования локального кэша (снижая тем самым затраты на сериализацию)</li></li></ul><li>Windows Azure AppFabricСaching пример кода<br />// Use cache configuration from app config<br />DataCacheFactoryCacheFactory = new DataCacheFactory();<br />// Get cache client for cache<br />DataCachemyCache = CacheFactory.GetDefaultCache();<br />// Add an object to the cache.<br />myCache.Put(“myKey", myObject);<br />retrievedObject = myCache.Get("myKey");<br />if (retrievedObject == null)<br />{<br /> // Cache miss<br />}<br />
  29. 29. SQL Azure и шардинг данных<br />Разделение (или шардинг) данных между несколькими базами данных<br />A-M<br />A-Z<br />Приложение<br />N-Z<br />Нагрузка «размазывается» между несколькими экземплярами базы данных<br /><ul><li>Позволит избежать ограничений на размер базы данных
  30. 30. Распараллеливание запросов между несколькими узлами
  31. 31. Улучшается производительность самих запросов</li></ul>Схема шардинга зависит от самих данных и варьируется в зависимости от ситуации<br />
  32. 32. Настройка производительности<br />
  33. 33. Основы тюнинга производительности<br />Настраивайте Windows Azure приложение также как Вы это делаете с обычными приложениями<br /><ul><li>Измерение
  34. 34. Оптимизация, там где она имеет место</li></ul>Наконец-то Windows Azure запущена в FULL IIS режиме<br /><ul><li>Теперь можно инсталлировать любой модуль используя WebPI
  35. 35. ДА И ВООБЩЕ, МОЖНО КАК УГОДНО СКОНФИГУРИРОВАТЬ IIS ИСПОЛЬЗУЯ AppCmd</li></ul>Простейшие основы<br /><ul><li>Для продакшена режим компиляции Release
  36. 36. Отключение в условиях продакшенаIntellTraceи Failed Request Tracing</li></ul>Настройка количества экземпляров роли<br />
  37. 37. Продвинутая настройка производительности<br />Разрешите компрессию для дополнительного контента<br /><add mimeType="application/json" enabled="true" /><br /><add mimeType="application/json; charset=utf-8" enabled="true" /><br />Настройка режима перезапуска пулов приложений<br /><ul><li>Измените расписание по умолчанию, чтобы избежать перезапуска в период пиковой нагрузки
  38. 38. Измерение и устранение утечек памяти</li></ul>Использование нового модуля IIS 7.5 App WarmUp<br /><ul><li>http://www.iis.net/download/ApplicationWarmUp</li></ul>Настройка Windows Azure Diagnostics<br />
  39. 39. Итак, вот оно идеальное приложение с точки зрения производительности<br />Blob Storage<br />CDN<br />Открытый<br />Открытый<br />Закрытый<br />Асинхронная модель<br />Синхронная модель<br />AppFabric Caching<br />Shared Access Signatures<br />Table Storage<br />Table Storage<br />Ключ<br />Тюнинг<br />SQL Azure<br />SQL Azure<br />SQL Azure<br />Sharding<br />
  40. 40. Спасибо за внимание<br />feschenko.alex@gmail.com<br />http://feschenkoalex.blogspot.com<br />twitter.com/FeschenkoAlex<br />

×