Apache Airflow - интегрируйте рабочий процесс DAG с внешними доменами, например Java Services - PullRequest
0 голосов
/ 20 февраля 2020

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

  • Необходимо интегрировать одного оператора ( давайте назовем это DOMAIN_1) результат / информация с внешним доменом (например, DOMAIN_2).
  • Это может быть выполнено с помощью события Doman, опубликованного в Message Broker. Внешний домен (DOMAIN_2), о котором я упоминал, может подписаться на вышеуказанное сообщение и сделать его бизнес-логи c.

Одна из целей в такой распределенной архитектуре - стремиться иметь автономные модули:

  • поэтому асинхронное сообщение представляется наиболее разумным, выгодным
  • , позволяющим временно отключить один модуль или развернуть его независимо
  • , с другой стороны, команда должна позаботиться HA (высокая доступность) Message Broker

Альтернативное решение может быть:

  • запуск внешнего домена через конечную точку REST - но, на мой взгляд, это выглядит как временная связь.
  • это влияет на автономность модулей, вы не можете планировать выпуск DOMAIN_2, пока есть большие объемы c при производстве
  • это временная связь
  • что если DOMAIN_1 выполнил какую-то работу, но не может интегрироваться с DOMAIN_2 - кто позаботится и попытается повторить неудачную конечную точку DOMAIN_2 Int запрос.

Могут существовать некоторые другие архитектурные решения, например, сохранять состояние DOMAIN_1 в базе данных, а затем иметь некоторую запланированную службу java в DOMAIN_2, которая пытается обрабатывать бизнес-логи c на основе сохраненной выше информации.

Есть ли какой-либо шаблон, доступный в Apache Воздушный поток, который решает такой случай?

  1. Возможно, DOMAIN_2 должен запускаться всегда через REST как отдельный оператор с некоторой повторной политикой. В Apache есть GUI Воздушный поток, и пользователи могут фильтровать фильтры и пытаться время от времени повторять неудачные задачи вручную.

    • Минусы: кажется, что возникает соединение
  2. Apache Поток воздуха масштабируемый, управляемый брокером сообщений и механизмом распределенных задач (Celery). Может быть, бессмысленно вводить дополнительные издержки на поддержку RabbitMQ только для интеграции с другими доменами?

    • хотя бы такое решение кажется паршиво связанным
  3. Даже асинхронным коммуникация не гарантирует, что сообщение будет доставлено и правильно обработано DOMAIN_2
    • ровно один раз при доставке / хотя бы один раз при доставке - что для достижения?
...