• Save
Построение высоконагруженных приложений на базе Windows Azure
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

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

on

  • 1,983 views

 

Statistics

Views

Total Views
1,983
Views on SlideShare
1,617
Embed Views
366

Actions

Likes
0
Downloads
0
Comments
0

6 Embeds 366

http://feschenkoalex.blogspot.com 345
http://feschenkoalex.blogspot.ru 10
http://feeds.feedburner.com 6
http://technet.com.ua 2
http://feschenkoalex.blogspot.de 2
http://feschenkoalex.blogspot.it 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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