Создание архитектуры решения с помощью Azure

Завершено

Для создания архитектуры приложений требуется понимание функциональных и нефункционных требований, а затем связывание этих требований с инструментами, технологиями и службами, которые могут решать эти требования.

В сценарии перехвата автобусов существует несколько основных требований:

  • веб-сайт для мониторинга движения автобуса в режиме реального времени;
  • уведомления, когда автобус находится поблизости;
  • автоматические развертывание и масштабирование.

Давайте подробно рассмотрим этот сценарий и узнаем, как можно спроектировать решение с помощью различных служб Azure.

Получение данных о движении автобуса в режиме реального времени

Многие города предоставляют данные общественного транспорта через спецификацию общего транзитного канала (GTFS), который также поддерживает веб-канал в режиме реального времени под названием GTFS в режиме реального времени Reference версии 2 (GTFS-RT). Веб-канал состоит из документа JSON, который выглядит так, как в следующем примере (взято с сайта метро округа Кинг):

{
      "id": "1618418866_4318",
      "vehicle": {
        "trip": {
          "trip_id": "49195161",
          "direction_id": 0,
          "route_id": "100001",
          "start_date": "20210414",
          "schedule_relationship": "SCHEDULED"
        },
        "vehicle": {
          "id": "4318",
          "label": "4318"
        },
        "position": {
          "latitude": 47.64524,
          "longitude": -122.370171
        },
        "current_stop_sequence": 228,
        "stop_id": "2010",
        "current_status": "IN_TRANSIT_TO",
        "timestamp": 1618418841
      }
    },

Зная, что такой канал доступен, вы должны далее выяснить, как получать уведомления, когда автобус достаточно близко к вам, чтобы вы знали, чтобы начать ходить на автобус, чтобы поймать автобус вовремя. Для этого мы можем создать геозону пару автобусных остановок перед нашей предполагаемой станцией . Таким образом, вы будете получать уведомления, когда автобус входит в геозону или выходит из нее. Такое уведомление позволяет даже не обращаться к карте для проверки того, где находится автобус. Когда вы получаете уведомление, вы понимаете, что пора выходить.

Создание архитектуры решения с помощью служб Azure

Ниже приведена возможная архитектура в зависимости от сценария и идеального решения.

Схема архитектуры микрослужб шины Catch.

Архитектура использует несколько различных служб, чтобы свести к минимуму объем кода, который необходимо написать, и использовать наиболее возможные преимущества масштабируемости и инфраструктуры Azure.

Хорошо известный текст (WKT) — это язык разметки обычного текста для представления векторных геометрических расположений на карте. WKT — это стандарт Открытого геопространственного консорциума (OGC), который используется для представления пространственных данных в текстовом формате. Большинство систем, совместимых с OGC, поддерживают известный текст.

Здесь вы получите общие сведения о том, какие компоненты решения выбраны и почему. Затем в этом модуле мы рассмотрим службу базы данных.

Хранение и обработка данных с помощью Базы данных SQL Azure

База данных SQL Azure прекрасно подходит для этого сценария. Давайте посмотрим почему.

База данных SQL Azure имеет встроенную поддержку JSON, которая помогает сократить объем кода, необходимого для управления данными, отправленными и полученными с базой данных. Это также делает решение более гибким и простым в улучшении благодаря гибкой природе JSON. Кроме того, вы можете эффективно передавать массивы данных в SQL Azure, оптимизировать круговые пути и сократить задержку.

Azure SQL также обеспечивает полную геопространственную поддержку, которая является отличной функцией, так как управление геопространственных данных не является самым простым из задач. Благодаря полнофункциональному геопространственной подсистеме в базе данных можно избежать сложности интеграции с внешними библиотеками. Кроме того, вам не нужно перемещать данные, чтобы выяснить, например, если шина находится в определенной геозоне. Так как SQL Azure соответствует стандартам открытого геопространственного консорциума, легко интегрировать данные, хранящиеся в SQL Azure, с библиотеками визуализаций, такими как OpenLayers.

Упомянутые выше функции основаны на мощном фундаменте реляционной модели, развитие которой насчитывает несколько лет для обеспечения соответствия требованиям современных приложений. База данных SQL Azure масштабируется до 100 ТБ с помощью Уровень гипермасштабирования, то есть его можно использовать для приложений с большим объемом хранилища (например, больших баз данных). База данных SQL Azure также является экономически эффективным при использовании Бессерверный уровень, поддерживающий автомасштабирование и приостановку и возобновление работы. Azure SQL также поддерживает индексы columnstore для ускорения быстрых аналитических запросов, моделей графов для упрощения сложного управления отношениями объектов и оптимизатора запросов, который постоянно улучшается и может обрабатывать даже самую требуемую рабочую нагрузку, например одну, необходимую для современных массовых многопользовательских онлайн-игр.

С помощью SQL Azure можно также легко получить доступ к статическим данным, таким как сведения о маршрутах, предоставляемые стандартом GTFS, которые можно хранить в учетной записи Хранилище BLOB-объектов Azure. Функцию OPENROWSET можно использовать в Azure SQL для импорта данных из текстового файла без необходимости обращаться к другой службе. Это позволяет свести к минимуму сложность решения.

По этим причинам База данных SQL Azure прекрасно подходит для таких приложений, как приложение для отслеживания перемещения автобуса, где вы работаете с JSON и геопространственными данными, но также можете воспользоваться преимуществами функций доступа к данным и процедур, встроенных в подсистему. Бессерверная База данных SQL Azure — это отличный вариант, позволяющий удовлетворить потребности в автоматическом масштабировании, что дает приложению возможность обрабатывать запросы в периоды пиковой загрузки, когда с приложением работает много других пользователей. База данных SQL Azure также поддерживает технологии CI/CD, такие как Azure DevOps и GitHub Actions, что упрощает автоматизацию развертывания.

Сборка службы API с помощью Функций Azure

Вам нужен API для доступа и использования веб-канала GTFS, чтобы уведомить пользователя, если шина вошла в геозону, а также для обслуживания данных в веб-приложении. Вы выбрали Функции Azure в качестве службы выбора из-за простоты и бессерверной архитектуры. Функции Azure является отличной службой, так как ее бессерверный характер автомасштабирует до необходимых объектов, оставляя почти все инфраструктурные аспекты Функции Azure. Функции Azure предоставляет поддержку для разных языков, поэтому вы можете выбрать предпочтительный или наиболее подходящий для задачи, с которой вы работаете, что соответствует чистому подходу микрослужб.

Отправка уведомлений с помощью Azure Logic Apps

Чтобы получить уведомление о том, что автобус находится в геозоне и вам нужно начать переход на автобусную станцию, один из вариантов в Azure — использовать Azure Logic Apps. Azure Logic Apps имеет большое количество соединителей, поэтому вы можете интегрироваться с другими службами. Например, вы можете использовать Azure Logic Apps для отправки SMS-сообщения или электронной почты из своей учетной записи Outlook или Gmail. Что отлично подходит для Azure Logic Apps, это низкая платформа кода или нет кода, поэтому настройка службы уведомлений для перехвата шины проста, и вы можете сделать это только с несколькими действиями мыши.

Размещение веб-приложения с помощью Статических веб-приложений Azure

Чтобы визуализировать геопространственные данные, представляющие геозоны и позиции шины на карте, можно создать статическую HTML-страницу с помощью известных библиотек jQuery и OpenLayers. Статическую страницу потребуется получить данные из серверного REST API, который будет предоставлять другая функция Azure. Так как клиентские и внутренние части необходимы для работы страницы визуализации, вы можете воспользоваться преимуществами Статические веб-приложения Azure. Статические веб-приложения Azure упрощает разработку и развертывание решения, так как она объединяет возможности Azure веб-приложения и Функции Azure, а также встроенную интеграцию с GitHub Actions.

Автоматизация развертывания с помощью GitHub Actions

Как вы видели, полное решение состоит из нескольких движущихся частей: внутренней службы для извлечения данных из веб-канала в режиме реального времени; база данных для хранения, обработки и обслуживания данных; и интерфейсное решение визуализации, состоящее из статического HTML-файла и конечной точки REST API. С помощью конвейера CI/CD с помощью GitHub Actions вы автоматизируете развертывание всех частей с помощью GitHub и Visual Studio Code всякий раз при фиксации изменений. Изменения в базе данных, если таковые имеются, а также изменения в Функциях Azure и Статических веб-приложениях Azure будут развертываться в полностью автоматическом и согласованном режиме.

Проверка знаний

1.

В этом сценарии, какая служба базы данных должна использоваться для хранения, обработки и обслуживания данных шины в режиме реального времени?

2.

Общий стандартный формат файлов, который мы будем использовать для получения данных Интернета вещей от транзитных транспортных средств в этом сценарии:

3.

Какой уровень служб или компонент в База данных SQL Azure будет поддерживать сценарий, в котором требуется база данных размером 12 ТБ?