Диссертация (1148251), страница 9
Текст из файла (страница 9)
Надежность в облаке Microsoft Azure обеспечиваетсяодним из механизмов репликации хранилища.1. Локально избыточное хранилище (LRS) — данные дублируются на трехразных серверах в пределах одного датацентра. Обновление копийпроисходит асинхронно с модификацией основного хранилища.2. Хранилище избыточное в пределах зоны (ZRS) — серверы с тремякопиями данных находятся в двух разных датацентрах одного, либо двухсоседних регионов.3.
Геоизбыточное хранилище (GRS) — три копии данных хранятся насерверах одного региона, а ещё три копии на серверах другогонесмежного региона. Обратиться к данным, реплицированным вовтором регионе, можно только при отказе хранилища в первом. Состороны Amazon аналогом является межрегиональная репликация CRR.414. Геоизбыточное хранилище с доступом для чтения (RA-GRS) —аналогично GRS, но в любое время можно обратится с доступом начтение к данным во втором регионе.По мере увеличения числа запросов к данным в своем хранилище, облачныйпровайдер будет размещать их на большем числе серверов, чтобы обеспечитьмасштабируемость.
Структуры данных, которые может содержать хранилищеданных обсуждаются ниже.Хранилище BLOB-объектов (binary large objects) в Azure для текстовых илибинарных файлов: изображения, видео, аудио, образы резервного копирования,большие массивы данных для обработки, протоколы и т.д. Все BLOB-объектыгруппируются в контейнеры, которые определяют общую политику безопасности.В зависимости от назначения содержимого, BLOB-объекты бывают: блочные(block,подходятдляхранениялюбыхфайлов),добавочные(append,оптимизированы для файлов, данные к которым добавляются в конец, например,логи и протоколы), страничные (page, оптимизированы для случайного доступа ииспользуются для реализации на их основе локальных дисков виртуальныхмашин).
Стоит отметить, что в случае параллельной работы с BLOB-объектами,MicrosoftAzureпозволяетобеспечитьоптимистичный(optimistic),пессимистичный (pessimistic) или “выигрывает последний” (“Last writer wins”)параллелизм [131]. Аналогичную технологию хранения файлов предлагаетAmazon Simple Storage (S3) [7], вся работа с которыми должна осуществлятьсячерез специальное API.Хранилище таблиц (table storage) в облаке Azure предназначено дляхранения NoSQL сущностей в виде набора записей ключ-значение. Как правило,далеко не всем объектам предметной области требуются мощные возможностиреляционных СУБД в виде нормализации данных, сложных соединений илихранимыхпроцедур[120].Например,дляадреснойкниги,каких-либометаданных, файлов настроек оптимально было бы использовать словарь(dictionary) или его облачный аналог — хранилище таблиц, в котором каждаясущность помимо требуемых предметной областью атрибутов, содержит42кластерный ключ (Partition key), ключ сущности (Row key) и время её изменения(timestamp).
Механизм кластеров обеспечивает параллельный доступ к таблицам,так как сущности разных разделов хранятся на разных серверах. Пара из ключейкластера и row key однозначно идентифицирует сущность и является первичнымключом. Атрибут timestamp увеличивается каждый раз при модификациисущности и используется хранилищем для обеспечения оптимистичногопараллелизма.Всеостальныеатрибутысущностиявляютсяискомым“значением”, которые можно получить по первичному ключу. Таким образомстановится возможно хранить объекты предметной области, не определяя явносхему таблиц.
Выборку данных из хранилища таблиц можно производить попротоколу OData [76], либо на языке запросов LINQ для платформы .NET.Хранилище очередей (queue storage) позволяет создавать очереди дляасинхронного обмена сообщениями между облачными ролями, или любымиприложениями. Модель обмена сообщениями подразумевает, что какой-либокомпонент порождает задачу, ставит её в очередь, откуда её забирает другойкомпонент, обрабатывает и передает результат обратно.
Таким образомдостигается низкая связность между компонентами и появляется возможностьмасштабировать их количество. В случае сбоя компонента, взявшегося заобработку задачи, эта задача вновь появляется в очереди и ею начинаетзаниматься другой рабочий компонент. Azure Service Bus (как и AWS SimpleQueue Service) — это отдельный сервис управления сообщениями, которыйподдерживает режим “брокера”, т.е.
принимающий компонент не обязан бытьактивным в момент посылки ему сообщения, а также предоставляет возможностьподписки на конкретные сообщения. Данный сервис применяется в основном дляинтеграции разнородных приложений, реализованных на разных платформах ирасположенных в разном сетевом окружении. В свою очередь, для доставки pushуведомлений от сервера на мобильные устройства разработан сервис AzureNotification Hub (или аналогичный AWS Simple Notification Service), которыйпредоставляет унифицированное API, инкапсулирующее механизмы работы сpush-уведомлениями на разных мобильных устройствах (iOS, Android, Windows43Phone, Amazon) [57].
В том случае, когда есть необходимость обрабатыватьбольшое число сообщений от различных устройств (например, в рамках“интернета вещей”), применяется сервис Azure Event Hub, который умеетпреобразовывать и группировать “сырые” данные, чтобы передать их, например,системе аналитики в реальном времени Azure Stream Analytics или сохранить ввиде BLOB-объектов для обработки Hadoop-системой Azure HDInsight. Наконец,сервис отправки почтовых сообщений AWS Simple Email Service [8] берет на себядоставку e-mail-сообщений заданной базе клиентов. Его применение увеличиваетшансы доставки писем до конечного адресата, так как Amazon следит завыполнением рекомендаций систем фильтрации спама.С помощью хранилища файлов (file storage) в облаке Azure создаютсяобщие (shared) папки, через которые облачные приложения могут обмениватьсяфайлами.
Работа с такими папками в пределах облака производится с помощьюобычных функций операционной системы (так как поддерживается стандартныйпротокол SMB).В отличие от работы с файлами на локальных дисках виртуальной машины,вышеперечисленные технологии предоставляют доступ к данным посредствомстандартного http/https протоколов, что дает возможность обращаться к нимнапрямую из любых приложений и браузеров.
Хранилище Amazon S3поддерживает также скачивание файлов по протоколу BitTorrent [100],распределяя исходящий трафик по пользователям, уже скачавшим целевой файл.Операции доступа, модификации и удаления данных, производятся через RESTинтерфейс или высокоуровневые клиентские библиотеки на языках семейства.NET, Java, C++, Node.js, PHP, Python, Ruby и пр. Однако следует помнить, чтопри передаче данных из хранилища за пределы его датацентра взимается плата и,поэтому, локальные диски виртуальных машин имеет смысл использовать длякэширования таких данных.
Подробнее работа с распределенным кэшемрассматривается в разделе 3 главы 4.441.4 Google App EngineДанное решение от компании Google принадлежит к классу PaaS, т.е. всеприложения выполняются в изолированных средах (sandbox) и пользователь неполучает доступ к оборудованию и операционной системе [78]. Эти приложенияне могут воспользоваться локальным диском или обратиться по локальной сети кдругим приложениям, используя вместо них файловое хранилище Google CloudStorage и очередь сообщений. Такая абстракция накладывает ограничения навозможные языки программирования, они должны быть безопасными иуправляемыми (managed): Java, Python, PHP, GO. Соответственно приложениедолжно быть разработано специально для этой платформы и удовлетворять еёправилам и ограничениям, например, приложение может быть запущено только врезультате веб-запроса, пришедшего сообщения из очереди или планировщикомзадач (cron job).
При этом приложение должно вернуть результат не позже, чемчерез 60 сек. после своего запуска. Это вынуждает разрабатывать модульныеприложения, которые разбивают длительные задачи на совокупность мелких,каждую из которых можно независимо масштабировать и, таким образом,платформа Google App Engine способствует разработке эластичных приложений.В качестве NoSQL хранилища таблиц предлагается Google Cloud Datastore,которая аналогично решению от Microsoft Azure поддерживает транзакции,отсутствие жесткой схемы (schema-less) для сохраняемых данных и концепциюсловаря ключ-значение.
Однако преимуществом является возможность работать сданными через специальный язык запросов GQL [39].При необходимостиработы с реляционной СУБД, приложения могут использовать Google Cloud SQL,основанную на MySQL.1.5 Red Hat OpenShiftВ 2013 году компания Red Hat запустила PaaS платформу с открытым кодомOpenShift [77], построенную на базе операционной системы Red Hat Enterprise45Linux [84]. С её помощью приложения размещаются как в открытой, так ичастнойоблачнойинфраструктуре.Всеприложениявыполняютсявизолированных средах (gears), которые могут выполняться одновременно наодном узле (node), что устраняет накладные расходы виртуальных машин.
Но, вотличие от Google App Engine, приложение разрабатывается обычным для Linuxразработчикаобразом,безпринудительногоиспользованияAPI-функцийоблачной платформы. В свою очередь высокоуровневые сервисы, такие как языкпрограммирования,базаданных,веб-серверилисерверприложений,распределенный кэш и пр., упаковываются программистом, сообществом илиоблачным провайдером в контейнеры (containers), которые достаточно указатьпри развертывании, а OpenShift сконфигурирует и запустит приложение всоответствующем окружении (близкой технологией можно считать Amazon EC2ContainerService[4]).Вданныймоментподдерживаютсяязыкипрограммирования Java, PHP, Perl, Ruby, Node.js, Python (так же, как и весь стекприложений этих платформ).
Список доступных СУБД включает: MongoDB,PostgreSQL, MySQL, SQLite. В случае частного облака поддерживаетсявозможность запуска узлов с Windows, платформой .NET и СУБД Microsoft SQLServer [71]. При росте нагрузки на gear-среду с приложением, их числоавтоматически увеличивается, и они размещаются на дополнительных узлах. Вслучае, когда к приложению нет обращений в данный момент, его gear-средавыгружается из памяти, что позволяет размещать больше приложений на одномузле.
Аналогично другим PaaS решениям, платформа OpenShift сама фиксируетсбои в приложениях и перезапускает их. Развертывание приложений можетпроизводиться прямо из системы управления версиями Git (как и в случаеMicrosoft Azure).Данная платформа будет интересна в первую очередь пользователям,разрабатывающим приложения на базе Red Hat Enterprise Linux [84], а такжекомпаниям игосударственным структурам, принципиальнотехнологии с открытым кодом.выбирающим461.6 Выводы по главеВ настоящее время наблюдается бурное развитие технологий, связанных синтенсивными вычислениями, например, когнитивные системы (IBM Watson)[60], синтез и обработка изображений, аудио и аналитика гигантских объемовданных (Big Data).