Жизненный цикл разработки для Apache NiFi [закрыт]

Я понимаю, что с NiFi, как определяет их doc, "непрерывное улучшение происходит в продукции". Таким образом, это не поддается использованию в качестве традиционного инструмента развития. Однако для проекта, над которым я работаю, было решено, что это инструмент, который мы будем использовать, поэтому я бы предпочел не обсуждать достоинства этого, поскольку я понимаю, что будут некоторые проблемы.

например, если я нажимаю изменения в существующую среду (от стадии до производства) и в пункте назначения были живые правки,они будут перезаписаны. Поэтому у меня есть вопросы о том, как организовать жизненный цикл развития.

  • можно слияние изменений что было сделано несколькими разработчиками параллельно (объединить экспортированные файлы шаблонов xml)? Я предполагаю, что слияние любых значительных изменений может быть трудным, но не пыталось это сделать.
  • как управление версиями изменения? Я предполагаю, что вы можете экспортировать свой вся конфигурация как шаблон и проверьте это в version control?
  • как развернуть поток на другой сервер? Можете ли вы просто развернуть развертывание NiFi, а затем обновить его из экспортированного шаблона (как упоминалось выше) с помощью API REST NiFi?
  • как чесотка развертывания в другой среде, которая может иметь различные конфигурации? Вам нужно будет обновить XML-файл шаблона? Или я могу вытащить его динамически из что-то вроде зоопарка?

1 ответов


как оригинальный автор элемента, который вы цитировали, и член Apache NiFi PMC позвольте мне начать с того, что вы задаете отличные вопросы, и я могу оценить, откуда вы пришли. Вероятно, нам следует улучшить вводный документ, чтобы лучше отразить проблемы, которые вы поднимаете.

У вас есть право, что текущий подход заключается в создании шаблонов потоков, а затем вы можете отправить это в управление версиями. Это также случай, когда люди автоматизируют развертывание эти шаблоны используют скрипты, взаимодействующие с REST API NiFi. Но мы можем и должны сделать гораздо больше, чем мы должны сделать работу по управлению потоком данных проще, независимо от того, являетесь ли вы разработчиком, пишущим именно то, что будет развернуто, или вы человек, ориентированный на операции, который должен собрать эти части самостоятельно.

  1. управление и управление версиями потоков [1] должно быть проще и централизованно управляться для совместного использования в нескольких кластерах и средах [2].
  2. нам нужно убедиться, что конкретные значения среды легко сопоставляются с заданной средой, но что шаблоны по-прежнему переносимы [3].
  3. нам нужно сделать многопользовательский / многопользовательский пользовательский интерфейс гораздо более интуитивным и естественным [4].

элементы 1 и 2 будут присутствовать в предстоящем выпуске 1.0, а пункт 3 полностью охватывается этим предстоящим выпуском. В то же время для случая с несколькими разработчиками я думаю, что это имеет смысл для они рассматривают свой собственный локальный экземпляр как место для "модульного тестирования" своего потока, а затем используют общую промежуточную или производственную среду. Ключевая вещь, которую нужно иметь в виду, заключается в том, что для многих потоков и с подходом NiFi нормально иметь несколько экземпляров данного шаблона потока, выполняющих каждый из которых подается живой поток данных. Результаты / выход этой подачи можно связать проволокой фактически для того чтобы получить поставленным где-то или просто быть заземленным. Таким образом, это очень похоже на ментальную модель ветвления в управление версиями, например Git. Вы можете выбрать, какой из них вы считаете "производством", а какой поток на графике-просто текущая ветвь функции, если хотите. Для людей, исходящих из более традиционного подхода, это не очевидно, и нам нужно сделать больше, чтобы описать и продемонстрировать это. Тем не менее, мы также должны поддерживать более традиционные подходы, и это то, что некоторые из предложений, с которыми я связан, позволят.

[1] https://cwiki.apache.org/confluence/display/NIFI/Configuration+Management+of+Flows

[2] https://cwiki.apache.org/confluence/display/NIFI/Extension + реестр

[3] https://cwiki.apache.org/confluence/display/NIFI/Variable + реестр

[4] https://cwiki.apache.org/confluence/display/NIFI/Multi-Tentant + поток данных