В середине-конце августа выйдет Apache DolphinScheduler 3.2.0, который принесет пользователям большое обновление. Чтобы лучше понять основные улучшения в этой версии, давайте представим новую функцию — удаленное ведение журнала, которая очень заинтересовала пользователей. Посмотрим, сможет ли эта функция упростить вашу работу!

Сегодня мы представим новую функцию Apache DolphinScheduler 3.2.0 под названием Remote Logging. Мы объясним эту функцию в трех частях: что это такое и какую проблему она решает, как ее настроить и как ее использовать.

Что такое удаленное ведение журнала? Какую проблему это решает?

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

Эта проблема эффективно решается с помощью удаленного ведения журнала. Общий процесс проиллюстрирован ниже:

Мы добавили в процесс дополнительную строку вместе с разделом «Удаленное ведение журнала» под ней. Когда Worker записывает журналы локально, асинхронный поток синхронизирует эти журналы с удаленным журналированием. В случаях, когда журналы утеряны из-за непредвиденных обстоятельств, но пользователи по-прежнему хотят просмотреть подробные журналы, запрос извлекает журналы из удаленного хранилища в локальную среду, из которой они затем предоставляются.

Почему мы вводим этот процесс? Во-первых, он обеспечивает согласованность интерфейса, поскольку все журналы отправляются от Worker на API-сервер для получения. Во-вторых, это сводит к минимуму использование полосы пропускания на удаленном конце. Удаленные журналы загружаются только в том случае, если локальные журналы отсутствуют.

Как настроить удаленное ведение журнала

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

Сначала измените файл общих свойств, задав свойство Remote.logging.enable и указав удаленный носитель данных, который вы хотите использовать. В настоящее время мы поддерживаем OSS, S3 и GCS.

Далее настройте параметры стороннего удаленного хранилища, например AccessKey, Secret, Bucket, Region и т. д.

Как использовать удаленное ведение журнала

Теперь давайте вернемся к интерфейсу и узнаем, как использовать удаленное ведение журнала и как подтвердить его эффективность.

У нас есть простой рабочий процесс, состоящий из двух задач, которые печатают числа 1 и 2 соответственно. Вручную запустите этот рабочий процесс и просмотрите журналы, чтобы убедиться, что они правильно записываются в удаленное хранилище.

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

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

Поскольку здесь мы используем S3, копия локально хранящегося журнала синхронизируется с удаленным хранилищем. Вернувшись на страницу S3, мы видим, что журнал теперь существует там.

Далее давайте смоделируем, как мы читаем журналы, когда локальные журналы Worker отсутствуют. Мы вручную удаляем этот файл журнала. Как видно из папки, изначально было два файла журнала с номерами 3 и 4. После удаления обоих соответствующих файлов журнала не остается.

В таких случаях в предыдущих версиях мы уже не могли просмотреть логи последнего экземпляра. Однако при удаленном ведении журнала, если локальный журнал отсутствует, журналы загружаются из удаленного хранилища в локальную среду для просмотра пользователем.

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

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

На этом завершается общий обзор функции удаленного ведения журнала. Если она соответствует вашим потребностям, смело обновляйтесь до версии 3.2.0, когда она выйдет в середине-конце августа, чтобы испытать ее!

Присоединяйтесь к сообществу

Добро пожаловать, заполните эту форму и станьте докладчиком Apache DolphinScheduler: https://forms.gle/MS2fQDhG4n9Hh2yv5:)

Есть много способов принять участие и внести свой вклад в сообщество DolphinScheduler, в том числе:

Документы, перевод, Вопросы и ответы, тесты, коды, статьи,основные доклады,и т. д.

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

Итак, сообщество составило следующий список задач, подходящих для новичков: https://github.com/apache/dolphinscheduler/contribute

Список проблем, не связанных с новичками:

https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+

Как внести свой вклад:

https://github.com/apache/dolphinscheduler/blob/8944fdc62295883b0fa46b137ba8aee4fde9711a/docs/docs/en/contribute/join/contribute.md

Репозиторий кода GitHub: https://github.com/apache/dolphinscheduler

Официальный сайт:https://dolphinscheduler.apache.org/

Список рассылки:dev@[email protected]

Твиттер:@DolphinSchedule

YouTube:https://www.youtube.com/@apachedolphinscheduler

Slack:https://s.apache.org/dolphinscheduler-slack

Руководство для участников:https://dolphinscheduler.apache.org/en-us/community/index.html

Ваша звезда для проекта очень важна, не стесняйтесь зажечь звезду для Apache DolphinScheduler ❤️