Должны ли действия Uber Cadence быть частью внедрения сервиса?

У меня есть вопрос о «лучшей практике» для реализации действий в Cadence. Когда действия рабочего процесса охватывают разные службы, обычно ли действия реализуются как часть самих служб, или более распространено разделение действий и использование API-интерфейсов служб для взаимодействия со службами?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
695
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Причины встроить активности сразу в отдельный сервис:

  • Длительные операции: не существует стандартного и простого способа реализовать длительную операцию в службе RPC. Если действие может занять несколько минут или больше, обычно ожидается, что оно будет биться, чтобы обеспечить своевременный тайм-аут. Клиентская библиотека Cadence напрямую поддерживает пульсацию.
  • Управление потоком: конфигурация рабочего процесса Cadence указывает максимальную скорость потребления и максимальное количество действий, обрабатываемых одновременно. Рабочий процесс Cadence — это, по сути, потребитель очереди, который получает новые задачи активности только тогда, когда у него есть возможность работать с ними в соответствии с конфигурацией. Когда действие вызывает удаленную службу, это управление потоком теряется. При перегрузке удаленная служба может только не выполнить запрос. Активность каденции в этом случае поддерживает экспоненциальное повторение, но полагаться на сбои и повторные попытки для управления потоком — явно худшее решение.

Бывают случаи, когда встраивание невозможно:

  • Вызов внешних сервисов: Часто рабочий процесс должен зависеть от существующих служб, которые не могут встраивать действия Cadence. В этом случае действие, вызывающее внешнюю службу, является единственным вариантом. Для управления потоком обязательно укажите экспоненциальную политику повторных попыток (включая список неповторяемых ошибок) при выполнении действия. Для длительных операций смоделируйте вызов как два действия. Первый вызывает API начни что угодно, а второй запрашивает результат в цикле внутри функции активности. Действие Поллфоррезультат должно возвращаться в службу Cadence, чтобы убедиться, что оно будет повторено, если рабочий процесс, на котором он размещен, выйдет из строя.
  • Неподдерживаемый язык программирования: Если вам нужно реализовать действие на языке, который до сих пор не имеет соответствующей клиентской библиотеки Cadence, то наиболее простым вариантом является частое предоставление этой функции как службы.

Другие вопросы по теме