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

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

on

  • 1,911 views

 

Statistics

Views

Total Views
1,911
Slideshare-icon Views on SlideShare
1,545
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 Построение высоконагруженных приложений на базе Windows Azure Presentation Transcript

    • Построение высоконагруженных web-приложений на базе Windows Azure
      Фещенко Александр
      feschenko.alex@gmail.com
      http://feschenkoalex.blogspot.com
      Twitter: FeschenkoAlex
    • Высоконагруженные web-приложения
      Что я имею ввиду:
      • Глобальная аудитория, низкое время ответа
      • Возможность масштабирования для обработки большого количества одновременных запросов
      • Высокие требования к пропускной способности
      Compute
      План:
      • Асинхронная модель программирования
      • Управление доступом к данным
      • Настройка производительности приложения
    • Асинхронная модель программирования
    • Синхронные приложения
      Один запрос обрабатывается одним потоком
      • Блокируется на время выполнения «работы», после чего возвращают ответ и снова становится доступным
      SQL Azure
      Веб приложение
      “Работа” #1
      Входящий запрос #1
      Средний уровень
      Блокировка
      Поток
      Ответ #1
      WA Storage
      Thread
      Ответ #1
      Compute
      Ожидание…
      Входящий запрос #2
      Время идет…
      Стеки потоков – структуры для обработки входящих запросов
      Большинство потоков простаивают впустую
      • Увеличение количества потоков для повышения производительности – тяжеловесный подход
    • Асинхронная модель программирования
      Веб приложение
      SQL Azure
      “Работа” #1
      Клиент #1
      Средний уровень
      Ответ #1
      WA Storage
      Ответ #1
      Поток
      Поток
      Клиент #2
      “Работа” #2
      Контекст
      Ответ #2
      Ответ #2
      Клиентские запросы явно отслеживаются во внутренних структурах приложения
      • Операции над контекстом должны быть идемпотентны или транзакционны
      Потоки блокируются ненадолго, поэтому большее количество потоков гарантирует большую пропускную способность
    • Асинхронная модель в облаке
      Асинхронная модель применительна как к локальным так и к облачным приложениям
      Для асинхронного взаимодействия между ролями вашего приложения очень удобна технология Windows Azure Storage Queues
      • Встроенная балансировка нагрузки
      • Изящная обработка падений отдельных экземпляров роли
      Windows Azure Storage и SQL Azure поддерживают асинхронные вызовы
      • ADO.NET Entity Framework
      • WCF Data Services
      • LINQ to SQL
      • Plain Old ADO.NET
    • Управление доступом к данным
    • Управление доступом к данным
      Как эффективно передать данные клиенту и от него ?
      • Существует много типов данных и каждый из них имеет свои особенности
      Blob
      Storage
      Приложение
      Приложение
      Как можно больше снижайте эффект своего присутствия
      • Отправляйте клиентов напрямую к Blob Storage за статическим контентом
      • Медиа (изображения, видео и др.)
      • Бинарные данные (XAP, MSI, ZIP и др.)
      • Текстовые форматы (XML)
    • Shared Access Signatures
      Предназначены для прямого доступа к защищенным ресурсам
      • Срок действия SAS заканчивается по истечению определенного промежутка времени либо по требованию
      2. Сервис формирует подпись на основе секретного ключа
      1. Я Боб, хочу получить доступ к X
      Приложение
      Ключ
      3. Сервис возвращает SAS подписанный HTTPS URL
      Blob Storage
      4. Боб использует SAS для доступа к Xнапрямую из Blob Storage
      Защищенный блоб (или платный)
      X
    • Глобальный доступ к блобам
      Получайте доступ к открытым блобам посредством Windows AzureCDN
      CDN
      Blob Storage
      Ближайшая точка присутствия
      Открытый контейнер
      X
      X
      DNS имя определяет ближайшую точку присутствия
      Снижает время ожидания и нагрузку на центральное хранилище
    • Content Delivery Network
      ~100 глобально распределенных дата-центра
      Quincy, WA
      Chicago, IL
      San Antonio, TX
      Dublin, Ireland
      Generation 4 DCs
    • Windows Azure CDN – с чего начать
      Разрешить CDN доступ с вашего аккаунта Windows Azure
      • Выполняется на dev-портале Windows Azure
      • Это сформирует новый формат доступа к открытым блобам посредством CDN
      • Одинаковый контент, 2 точки доступа
      • CDN URL: http://azXXXX.vo.msecnd.net/images/myimage.png
      • 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
      Клиенты видят кэш в виде единого унифицированного представления
      Кеширующий слой
      Кеширующий слой распределяет данные между несколькими хостами
    • Windows Azure AppFabricСaching
      Что это?
      • Windows Server AppFabric Cache – распределенное кеширование для собственных серверов
      • CTP релиз на PDC
      • В ближайшем будущем полный паритет между облачной версией и стандартной
      Прекрасная производительность
      • Высоко масштабируемый 64-х битный
      • Высокая отказоустойчивость, низкое время ответа
    • Преимущества AppFabric Caching
      Прост в администрировании
      С легкостью интегрируется в существующие приложения
      • ASP.NET Session State и Output Cache провайдеры
      Такой же интерфейс управления как и у Windows Server AppFabric Cache
      Способен кешировать любой сериализируемый объект
      • Никаких ограничений на размер объекта
      • Возможность использования локального кэша (снижая тем самым затраты на сериализацию)
    • 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
      }
    • SQL Azure и шардинг данных
      Разделение (или шардинг) данных между несколькими базами данных
      A-M
      A-Z
      Приложение
      N-Z
      Нагрузка «размазывается» между несколькими экземплярами базы данных
      • Позволит избежать ограничений на размер базы данных
      • Распараллеливание запросов между несколькими узлами
      • Улучшается производительность самих запросов
      Схема шардинга зависит от самих данных и варьируется в зависимости от ситуации
    • Настройка производительности
    • Основы тюнинга производительности
      Настраивайте Windows Azure приложение также как Вы это делаете с обычными приложениями
      • Измерение
      • Оптимизация, там где она имеет место
      Наконец-то Windows Azure запущена в FULL IIS режиме
      • Теперь можно инсталлировать любой модуль используя WebPI
      • ДА И ВООБЩЕ, МОЖНО КАК УГОДНО СКОНФИГУРИРОВАТЬ IIS ИСПОЛЬЗУЯ AppCmd
      Простейшие основы
      • Для продакшена режим компиляции Release
      • Отключение в условиях продакшенаIntellTraceи Failed Request Tracing
      Настройка количества экземпляров роли
    • Продвинутая настройка производительности
      Разрешите компрессию для дополнительного контента
      <add mimeType="application/json" enabled="true" />
      <add mimeType="application/json; charset=utf-8" enabled="true" />
      Настройка режима перезапуска пулов приложений
      • Измените расписание по умолчанию, чтобы избежать перезапуска в период пиковой нагрузки
      • Измерение и устранение утечек памяти
      Использование нового модуля IIS 7.5 App WarmUp
      • http://www.iis.net/download/ApplicationWarmUp
      Настройка Windows Azure Diagnostics
    • Итак, вот оно идеальное приложение с точки зрения производительности
      Blob Storage
      CDN
      Открытый
      Открытый
      Закрытый
      Асинхронная модель
      Синхронная модель
      AppFabric Caching
      Shared Access Signatures
      Table Storage
      Table Storage
      Ключ
      Тюнинг
      SQL Azure
      SQL Azure
      SQL Azure
      Sharding
    • Спасибо за внимание
      feschenko.alex@gmail.com
      http://feschenkoalex.blogspot.com
      twitter.com/FeschenkoAlex