Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 4 Базовые технологии, использованные при реализации.

Презентация:



Advertisements
Похожие презентации
Развитие платформы облачных вычислений Microsoft Windows Azure Лекция 4 Базовые технологии, использованные при реализации новой версии Microsoft Windows.
Advertisements

Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 3 Основные концепции и архитектура Microsoft.
ФИЛОСОФИЯ.NET Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться.
Развитие платформы облачных вычислений Microsoft Windows Azure Лекция 6 Windows Azure Storage Сафонов Владимир Олегович Профессор кафедры информатики Заведующий.
Развитие платформы облачных вычислений Microsoft Windows Azure Лекция 7 Новая версия Windows Azure Compute Сафонов Владимир Олегович Профессор кафедры.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 2 Понятие об облачных вычислениях. Обзор платформ.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 6 Windows Azure Storage Сафонов Владимир Олегович.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 10 Разработка приложений для Windows Azure.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 5 Windows Azure Fabric Сафонов Владимир Олегович.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 8 Управление Web-сервисами в Windows Azure.
Развитие платформы облачных вычислений Microsoft Windows Azure Лекция 8 Управление Web-сервисами в новой версии Windows Azure Сафонов Владимир Олегович.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 9 SQL Azure Сафонов Владимир Олегович Профессор.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 7 Windows Azure Compute Сафонов Владимир Олегович.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 12 Инструменты Windows Azure Сафонов Владимир.
Учебный курс Технологии и средства разработки корпоративных систем Лекция 7 Создание веб-сервисов Лекции читает кандидат технических наук, доцент Зыков.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 13 Методы и инструменты применения Windows.
ДонНУ, кафедра КТ, проф.В.К.Толстых WCF-службы Создание и тестирование.dll-библиотеки WCF-служб Из цикла лекций «Internet-технологии разработки приложений»
Развитие платформы облачных вычислений Microsoft Windows Azure Лекция 3 Основные концепции и архитектура новой версии платформы Microsoft Windows Azure.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Транксрипт:

Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 4 Базовые технологии, использованные при реализации Microsoft Windows Azure Сафонов Владимир Олегович Профессор кафедры информатики Заведующий лабораторией Java-технологии Санкт-Петербургский государственный университет WWW:

Windows Azure реализована на базе.NET.NET – платформа надежного и безопасного многоязыкового программирования Основана на единой для всех языков инфраструктуре (CLI), общей системе типов, общей системе поддержки выполнения (CLR) Исходный код на любом языке компилируется в сборку, содержащую бинарный код на едином промежуточном языке (CIL) – постфиксную запись программы, и метаданные – информацию о типах, определенных и использованных в сборке Исполнение программы в CLR – вызов методов и just-in-time (динамическая) компиляция каждого метода в native-код при первом вызове, с последующими вызовами native-кода Метаданные могут быть аннотированы атрибутами, как встроенными, так и пользовательскими На использовании метаданных основан динамический контроль типов и безопасности, выполняемый CLR (C) Сафонов В.О Обзор архитектуры.NET 2

(C) Сафонов В.О Основные идеи и принципы.NET Компилятор с любого языка (например, C# или VB) транслирует исходный код приложения в общий для всех входных языков формат - CIL (Common Intermediate Language; другое название - MSIL – Microsoft Intermediate Language); Кроме CIL-кода, компилятор также генерирует метаданные – общую для всех языков информацию о типах и других именованных сущностях (классах, методах, полях и др.), определенных и использованных в данном приложении; CIL + метаданные + манифест = сборка, состоящая из одного или более PE (Portable Executable) файлов Во время выполнения CIL-код динамически компилируется (на лету - on-the-fly) в объектный код конкретной целевой платформы (x86, x64, Mac, IA-64 и др.) с помощью Just-in-Time (JIT) - компилятора Все данные, передаваемые через Internet/Intranet, а также все конфигурационные файлы представлены в формате XML 3

(C) Сафонов В.О Преимущества подхода.NET.NET Portable Executable (PE) – файлы, генерируемые компиляторами NET, и данные в XML-формате могут быть переданы через Internet (например, по протоколу HTTP) и JIT- компилированы или интерпретированы на клиентских компьютерах Использование метаданных во время выполнения обеспечивает исполнение управляемого кода (managed code execution), с динамическим контролем типов, проверками безопаснности во время выполнения и т.д. Программист может разработать свое приложение на любом удобном ему языке, реализованном для.NET, и включить в приложение любые модули, написанные на других языках, также реализованных для.NET Повышенная степень безопасности: ролевая безопасность (role- based security), безопасность доступа к коду (code access security), безопасность на основе информации о сборках (evidence- based security), прогулка по стеку (security stack walk) XML Web-сервисы и ASP.NET – особенно важны для современного программирования; только для их использования стоит изучить.NET 4

(C) Сафонов В.О System.Data Design OLEDB SQLTypes SQL System Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess SecurityRuntime InteropServices Remoting Serialization System.Xml XPath XSLTSerialization System.Web ConfigurationSessionState CachingSecurity Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing.NET Framework Классы System.Windows.Forms FormButton MessageBoxListControl 5

Типы-значения и типы-ссылки Простые типы Структуры-значения Указатели (managed pointers) Классы Интерфейсы Делегаты и события (C) Сафонов В.О Общая система типов.NET 6

(C) Сафонов В.О public class Person : IPersonAge { private int YOB; public Person() { } public int YearOfBirth { get { return YOB; }; set { YOB = value; }; } public int GetAgeToday() { return Today()- YearOfBirth }; } Язык C#: Классы Реализуют код и данные Являются семантическими единицами Реализуют интерфейсы Наследуют от общего базового класса Содержат: Поля: переменные-элементы Свойства: обрабатываются парами методов get/set Методы: функциональность Особые элементы: индексаторы, события, делегаты 7

Web-сервисы в.NET Предоставляют сервисы для других процессов в Internet или intranet Подход черного ящика Многократно используемые компоненты Основаны на.NET Framework Модель ASP.NET Web-сервисов Основаны на общих стандартах HTTP, XML и SOAP (C) Сафонов В.О

Распределенные Web-приложения в.NET Internet Приложение Устройства, браузеры ОС и локальные сервисы Вертикальный и портальный сервис Web-сервис, специфичный для приложения Web-сервис – строительный блок Приложение для доступа Сервисы вызова Контракт Web-сервисов (C) Сафонов В.О

Инфраструктура Web-сервисов.NET Web Service Client Discovery Request.vsdisco Return disco (XML) Description Request WSDL Return WSDL (XML) Protocol Request.asmx Return response (XML) (C) Сафонов В.О

Пример реализации Web-сервиса.NET using System; using System.Web.Services; public class MathService { [WebMethod] public int Subtract(int a, int b) { return a - b; } public int Subtract_vs(int a, int b) { return b - a; } } (C) Сафонов В.О

(C) Сафонов В.О WSDL Абстрактная структура WSDL-элементов service_2 service_1 message port_A port_D port type port_C port_B message (C) Сафонов В.О

Пример WSDL-файла (C) Сафонов В.О

Использование Web-сервисов через пользовательский интерфейс Полностью разделена логика размещения и вызова Два (или более) файлов:.aspx и.aspx.cs (или.aspx.vb) Файлы для дизайнеров и программистов Легкость сопровождения приложения. aspx.aspx.cs (C) Сафонов В.О

Пример (.aspx) public void Submit_Click(Object S, EventArgs E) { service.Add(operand1, operand2); (C) Сафонов В.О

Windows Azure Архитектура Windows Azure Windows Azure Fabric Fabric Controller ComputeStorage Cloud Application Network (C) Сафонов В.О

Архитектура Windows Azure Fabric - сеть взаимосвязанных узлов: Commodity –серверы высокоскоростные раутеры, переключатели и др. волоконно-оптические коннекторы The Azure Fabric Controller – сервис, который осуществляет мониторинг и предоставляет виртуальные машины для исполнения облачных приложений Главные сервисы Windows Azure Compute: Хостинг масштабируемых сервисов на платформе Windows Server Storage: управление данными (не реляционными). Network: Ресурсы для взаимодействия со внешними приложениями (Service Bus). (C) Сафонов В.О

Функции Fabric Controller Fault Domains: Единица обработки ошибок в ЦОД (например, кластер машин). Update Domains: модификация областей при апгрейдах (ОС, сервисы). Владельцы приложений описывают требуемые ресурсы в виде дескрипторов ресурсов (моделей сервисов). Fabric Controller автоматически предоставляет требуемые ресурсы. Fabric Controller обеспечивает устойчивость ресурсов к ошибкам и быстрый доступ к ним. Раннее обнаружение ошибок в приложениях. Создание дополнительных экземпляров по требованию. Экземпляры размещаются поверх fault и update domains. (C) Сафонов В.О

Physical Machine 1 Роли Web и Worker Web -роль: Интерактивное.NET – приложение, обслуживаемое IIS: Web Application или Web Service (WCF) Worker - роль: Независимый фоновый процесс Изолирован от внешнего мира Предоставляются способы доступа к нему со стороны внешних приложений Fabric Agent собирает метрики ресурсов (использование, ошибки, …) Hardware Load Balancer Virtual Machine 2 Fabric Controller Virtual Machine 1 Web Role Instance IIS Fabric Agent Physical Machine 2 Virtual Machine 2 Virtual Machine 1 Worker Instance Fabric Agent HTTP/HTTPS (C) Сафонов В.О

Модель сервисов: Определение сервисов Файл ServiceDefiniton.csdef определяет общую структуру сервиса: vmsize: ядра CPU (1 – 8) и память для виртуальной машины VM (1.7 – 15 GB) full/partial trust: поддерживается исполнение native-кода Endpoint: внутренние и внешние точки взаимодействия (http, https, tcp) LocalStorage: временная память на сервере, на котором исполняется объект ConfigurationSettings: имена параметров конфигурации Service Definition обрабатывается во время развертывания приложения. … (C) Сафонов В.О

Модель сервисов: Конфигурация сервисов Файл ServiceConfiguration.csdef указывает число экземпляров каждой роли определяет значения для установок конфигурации. Service Configuration может быть изменена во время выполнения. (C) Сафонов В.О

Классы Windows Azure Role API Role Instances Names BasicEntryPoint OnStart() OnStop() Run() MyWebRole OnStart() MyWorkerRole OnStart() Run() RoleEnvironment CurrentRoleInstance Roles GetConfigurationSettingValue() RequestRecycle() Changed (Event) Changing (Event) Stopping (Event) RoleInstance Id Role FaultDomain UpdateDomain InstanceEndpoints * Roles CurrentRoleInstance (C) Сафонов В.О

Реализация ролей Определить класс-потомок RoleEntryPoint и перегрузить методы жизненного цикла. Обычно перегружается метод OnStart() Регистрируется обработчик, который прослушивает изменения в конфигурации учетной записи облачной памяти. Когда обнаруживается изменение, роль повторно стартуется (переиспользуется). public class MyRole: RoleEntryPoint { public override bool OnStart() { CloudStorageAccount.SetConfigurationSettingPublisher( (configName, configSetter) => { configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); RoleEnvironment.Changed += (sender, arg) => { if (arg.Changes.OfType ().Any((change) => (change.ConfigurationSettingName == configName))) { if (!configSetter(RoleEnvironment.GetConfigurationSettingValue(configName))) RoleEnvironment.RequestRecycle(); }; // handler for Changed event }); // SetConfigurationSettingPublisher return base.OnStart(); } (C) Сафонов В.О

Реализация ролей Web и Worker Web Role Никаких отличий от стандартов ASP.NET Web Forms, ASP.NET MVC или WCF-приложений Worker Role Переопределяется метод Run() класса RoleEntryPoint. Этот метод служит в качестве главного потока исполнения для этой роли. public class WorkerRole : RoleEntryPoint { public override void Run() { while (true) { // get next message // process message // delete Message Thread.Sleep(1000); } Альтернатива: можно прослушивать внешние HTTP(S) - или TCP- коммуникационные точки для входящих сообщений. (C) Сафонов В.О

Взаимодействие между ролями Экземпляры ролей могут взаимодействовать асинхронно с помощью очередей. Предпочтительный метод для надежного обмена сообщениями Role Instance 1 Queue Role Instance 2 Role Instance 3 Role Instance 4 Экземпляры ролей могут также взаимодействовать непосредственно с помощью TCP- или HTTP(S) - соединений. External App Role Instance 2 Load Balancer Role Instance 1 Role Instance 3 Role Instance 4 External Endpoint Internal Endpoint (C) Сафонов В.О

Взаимодействие между ролями на основе WCF/TCP (1) Реализация сервиса xxx Конфигурация worker-роли Добавление внешних или внутренних коммуникационных точек public class CalculatorService : ICalculator { public double Add(double a, double b) { return a + b; } [ServiceContract(Namespace="…")] public interface ICalculator { [OperationContract] double Add(double a, double b); } (C) Сафонов В.О

Windows Azure Взаимодействие между ролями на основе WCF/TCP (2) public class WorkerRole : RoleEntryPoint { private ServiceHost serviceHost; public override void Run() { this.serviceHost = new ServiceHost(typeof(CalcService)); NetTcpBinding binding = new NetTcpBinding(SecurityMode.None); RoleInstanceEndpoint externalEndPoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["CalcServiceEP"]; this.serviceHost.AddServiceEndpoint( typeof(ICalcService), binding, String.Format("net.tcp://{0}/CalcService", externalEndPoint.IPEndpoint)); // hostname and port } Хостинг WCF-сервиса External App Load Balancer Role Instance CalcService net.tcp://myProject. cloudapp.net:5000/CalcService CurrentRoleInstance. InstanceEndpoints["CalcService"] (C) Сафонов В.О

Взаимодействие между ролями на основе WCF/TCP (3) При использовании внутренних коммуникационных точек отправитель должен выполнять балансировку загрузки вручную. Используйте RoleEnvironment.Roles[TargetRole] для поиска этих коммуникационных точек NetTcpBinding binding = new NetTcpBinding(SecurityMode.None, false); using (ChannelFactory cf = new ChannelFactory (binding, "net.tcp://5000/CalcService")) { ICalcService calcProxy = cf.CreateChannel(); double sum = calcProxy.Add(1,2); } Реализация клиента foreach (RoleInstance ri in RoleEnvironment.Roles["CalcRole"].Instances) { RoleInstanceEndpoint ep = ri.InstanceEndpoints["MyInternalEP"]; string address = String.Format("net.tcp://{0}/MyService", ep.IPEndpoint); var cf = new ChannelFactory (binding, address); … } (C) Сафонов В.О

Сервисы.NET - надежная и безопасная основа для реализации Azure Дополнительные детали по поводу реализации компонент Fabric, Storage, Compute приведены далее в соответствующих лекциях (C) Сафонов В.О Резюме 29

Домашнее задание к лекции 4 1.Реализуйте WCF-сервис для упрощенного обмена сообщениями 2.Сформулируйте, в чем, по-Вашему, достоинства и недостатки рассмотренной реализации Azure? (C) Сафонов В.О