Статьи

Создание долговременных облачных событий из исходного источника контейнера с помощью Azure Durable Task Framework

Прочная облачная обработка событий с Knative

Knative — превосходная платформа для создания, развертывания и управления безсерверными рабочими нагрузками в Kubernetes. В Порции ресурсов Knative расширить Istio для поддержки бессерверных приложений. Другой класс ресурсов Knative называется троеборью расширить Istio для поддержки производства и потребления облачных событий .

Knative снимает с себя ответственность за масштабирование рабочих нагрузок пользователей, активируя модули только при получении запроса. Он масштабирует модули рабочей нагрузки на основе количества запросов и уменьшает их до нуля, когда они простаивают. Еще одна замечательная особенность Knative — это способность понимать ревизии кода и конфигураций. Если развертывание кода или конфигурации нарушает работу приложения, Knative автоматически откатывает обновление. Обслуживающий компонент Knative может постепенно развертывать версии приложений и обеспечивает гибкое распределение трафика между версиями. Knative Eventing добавляет возможность создания сервисов, управляемых событиями, для платформы. Это позволяет объявлять привязки между производителями событий и потребителями, используя конфигурации, которые отделяют производителей от потребителей событий.

Вам также может понравиться:  Knative Serving — сервисный звонок

В Knative есть несколько встроенных источников событий, которые могут генерировать облачные события из таких источников, как Kubernetes, GitHub и AWS SQS. Существует две модели доставки событий, сгенерированных источником, в службу Knative.

  • Прямая доставка : в этой модели источник может напрямую доставить событие в один сервис. Служба может быть либо службой Knative, либо службой Kubernetes. Источник отвечает за повторную доставку, если служба недоступна.



 

Прямая доставка
  • Разветвленная доставка . В этой модели события из источника направляются в другой компонент Knative, известный как канал. Все сервисы, которые заинтересованы в прослушивании событий, предоставляют подписки на каналы и, таким образом, могут асинхронно получать события. Модель разветвленной доставки — это реализация Knative популярного шаблона Pub \ Sub.

Развернуть доставку

В этой статье мы разработаем собственный источник событий с ядром .NET и доставим события в другой пользовательский сервис Knative, используя модель прямой доставки.

Контейнер Источник

Самый простой подход к созданию пользовательского источника событий заключается в использовании вспомогательного объекта Knative ContainerSource. Контейнерный источник генерирует события и отправляет события в URI приемника. Приемник может быть либо сервисом Knative, либо каналом. Knative гарантирует, что источник контейнера всегда будет работать, пока не будет удален. Любое приложение может выступать в качестве источника контейнера, если оно удовлетворяет следующим требованиям.

  1. Приложение может быть упаковано в контейнер и определено как ENTRYPOINT .

  2. Ожидается получение   --sink параметра CLI или чтение   sink переменной окружения, реализации которой предоставляет Knative.

--sink Параметр или   sink  переменная среды содержит адрес раковине , в которой контейнер с источником должны вывесить события.

Прочный контейнерный источник

Knative гарантирует, что источник контейнера всегда выполняется, перезапуская контейнер в случае его сбоя. Однако источники контейнеров по умолчанию не имеют состояния и, следовательно, не могут управлять рабочими процессами с отслеживанием состояния. Войдите в  Azure Durable Task Framework , которая является средой для написания долговременных постоянных рабочих процессов на C #. В  Прочных функциях Azure  являются одним из наиболее распространенных реализаций рамок , которые используются для работы с сохранением состояния функции в лазури.

В этой статье мы обсудим, как можно объединить платформу долгосрочных задач Azure с Knative Container Source для создания облачных событий и выполнения рабочего процесса с сохранением состояния. Мы будем использовать следующее для создания нашего приложения, которое впоследствии вы сможете развернуть в своей любимой облачной службе Kubernetes, такой как Azure (AKS) и AWS (EKS). Я использовал варианты Windows следующих приложений.

  1. Docker Desktop с включенным Kubernetes
  2. Visual Studio
  3. Эмулятор хранилища Azure (или фактическая учетная запись хранения в Azure)

Монтаж

Используйте  это справочное руководство  для установки Knative на вашей платформе. Для Windows шаги, упомянутые для Minikube и Docker Desktop для Mac, работают отлично. Вот скрипт, который я использовал для установки Knative на Docker Desktop для Windows. Я предполагаю, что следующий скрипт будет работать в любой среде.


Оболочка