1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dianjiu-job-plus

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Job Plus

Основывается на Spring Boot и представляет собой легковесную систему управления периодическими задачами.

SpringBoot LICENSE star star

https://github.com/dianjiu/job-plus

https://gitee.com/dianjiu/job-plus

Связанный проект job-plus-vue

Основывается на Vue.js и представляет собой UI для администрирования системы Job Plus.

VUE LICENSE star star

https://github.com/dianjiu/job-plus-vue

https://gitee.com/dianjiu/job-plus-vue## Выбор технологий

  • springboot 2.3.1
  • SpringSecurity 2.3.1
  • httpClient 4.5.12
  • quartz 2.3.2
  • druid 1.1.22
  • fastjson 1.2.71

Функционал проекта

  1. Архитектурные тренды: система использует SpringBoot + Vue для разделения клиентской и серверной частей, фронтенд отдельно развёрнут, Nginx обеспечивает балансировку нагрузки.

  2. Дружественные API: одновременно поддерживаются Swagger2 и Knife4j для визуализации и тестирования API, а также возможность работы с оффлайн документацией API.

  3. Управление задачами: поддерживается CRUD операция над задачами через веб-интерфейс, визуальный интерфейс, быстрое освоение.

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

  5. В реальном времени: поддерживается мониторинг полного журнала выполнения через веб-интерфейс.

  6. Единый поиск: поддерживается глобальный уникальный поиск по jobname или jobgroup через веб-интерфейс.

  7. Высокий уровень настройки: поддерживается онлайн конфигурация типов запросов, путей запросов, параметров запросов и выражений Cron, изменения сразу применяются.

  8. Динамическое управление: поддерживается динамическое изменение состояния задач, запуск/остановка задач, а также завершение выполняющихся задач, изменения сразу применяются.

  9. Политики выполнения: поддерживается множество политик выполнения, включая GET запросы, POST JSON запросы и POST формы. 10.Автоматическая регистрация: периодически автоматически регистрируются задачи, при этом можно вручную добавлять адреса задач.

  10. Автоматическое выполнение: система автоматически распознаёт и запускает зарегистрированные задачи; при этом можно вручную запустить задачи немедленно.

  11. Управление пользователями: поддерживается управление пользователями, ролями и меню через веб-интерфейс; доступны три роли по умолчанию: администратор, разработчик и обычный пользователь.

  12. Контроль прав доступа: поддерживается онлайн контроль прав доступа; администратор имеет все права, разработчики имеют все права, кроме управления ролями, а обычные пользователи имеют права только для управления задачами.

  13. Распределённое исполнение: поддерживается распределённое исполнение; система позволяет развёртывание в виде кластера, что гарантирует высокую доступность выполнения задач.

  14. Эластичное расписание: при появлении новых машин или их выходе из строя, следующее расписание будет перераспределено.

  15. Стратегия маршрутизации: система предоставляет множество стратегий маршрутизации при развёртывании в виде кластера, включая круговой метод, случайный выбор, перенаправление при отказе и перенаправление при занятости. 17.Перенаправление при отказе: если выбрана стратегия "перенаправление при отказе", то при отказе одной машины в кластере, задача будет перенаправлена на другую рабочую машину.

  16. Стратегия блокировки: стратегия обработки при слишком частых запусках, включает последовательное выполнение на одном узле (по умолчанию), игнорирование последующих запусков и перезапись предыдущих запусков.

  17. Управление временем ожидания: поддерживается настройка времени ожидания задач, задача будет прервана при превышении этого времени.

  18. Механизм повторной попытки: поддерживается настройка количества повторных попыток задач, задача будет повторно запущена при неудаче в соответствии с настроенным количеством попыток. Фабрика сообщений: по умолчанию предоставляет способ отправки сообщений через фабрику электронной почты, при этом оставляются расширяемые интерфейсы для удобного добавления методов отправки SMS, DingTalk и других типов сообщений;22. Уведомление по электронной почте: в случае срабатывания задач поддерживается возможность отправки уведомлений по электронной почте, а также конфигурация нескольких адресов электронной почты для рассылки уведомлений;

  19. Отчеты о выполнении: поддерживает реальное время отслеживание данных выполнения и создание отчетов о планировании, такие как график распределения дат планирования, график распределения выполнения групп задач и т.д.;

  20. Триггер событий: помимо триггера задач через "cron" и "зависимости задач", предоставляется API для одноразового запуска задач;

  21. Скриптовые задачи: поддерживает разработку и выполнение скриптовых задач на основе GLUE распределённой платформы, включая Shell, Python, NodeJS и другие типы скриптов;

  22. Параллельное выполнение: система поддерживает параллельное выполнение задач через многопоточность, обеспечивая точное выполнение планирования и предотвращая заторы;

  23. Деградация и изоляция: потоки планирования изолированы и разделены, медленные задачи автоматически понижаются до уровня "slow" потока, что предотвращает исчерпание потоков планирования и повышает стабильность системы;

  24. Gradle: последняя стабильная версия будет публиковаться в центральном репозитории Gradle, что облегчит пользователям процесс интеграции и использования;29. Maven: последняя стабильная версия будет публиковаться в центральном репозитории Maven, что облегчит пользователям процесс интеграции и использования;

  25. Однозначность: на основе Redis распределённых замков гарантируется конечная однозначность распределенного планирования, каждое планирование задачи вызывает только одно выполнение;

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

  27. Кросс-платформенный подход: система предлагает язык-независимый RESTful API сервис, позволяющий сторонним разработчикам использовать любые языки программирования для интеграции с Task Manager;

  28. Интернационализация: административная система поддерживает международные настройки, предлагая два варианта языка — китайский и английский, по умолчанию используется китайский;34. Контейнеризация: предоставляется официальный Docker образец, который постоянно обновляется и публикуется на DockerHub, что позволяет еще больше упростить использование продукта. ## Разработка прогресса

  • Архитектурные тренды: система использует SpringBoot + Vue для разделения клиентской и серверной части, фронтенд отдельно развёрнут, Nginx для балансировки нагрузки
  • Дружественные интерфейсы: одновременно поддерживаются Swagger2 и Knife4j для визуализации API-интерфейсов, поддержка офлайн документов API;
  • Управление задачами: поддерживается управление задачами через веб-страницу с CRUD операциями, визуальное представление, быстрое освоение;
  • Журнал выполнения: поддерживается просмотр результатов планирования, выполнения и времени следующего запуска через веб-страницу;
  • В реальном времени журнал: поддерживается просмотр полного журнала выполнения, выдаваемого исполнителем, через веб-страницу;
  • Единый поиск: поддерживается глобальный уникальный поиск по jobname или jobgroup через веб-интерфейс;
  • Высокий уровень настройки: поддерживается онлайн конфигурация типов запросов, путей запросов, параметров запросов и выражений Cron, моментная активация;
  • Динамическое управление: поддерживается динамическое изменение состояния задач, запуск/остановка задач, а также завершение выполняющихся задач, моментная активация; - [x] Политика выполнения: поддерживается множество политик выполнения, включая: GET запросы, POST JSON запросы, POST FORM формы запросы;
  • Автоматическая регистрация: периодическая автоматическая регистрация задач, а также поддержка ввода адреса задачи вручную;
  • Автоматическое выполнение: система автоматически распознаёт зарегистрированные задачи и запускает их, а также поддерживает вручную запуск задач;
  • Управление пользователями: поддерживается управление пользователями, ролями и меню через веб-страницу, три роли по умолчанию: администратор, разработчик, обычный пользователь;
  • Контроль прав доступа: поддерживается онлайн контроль прав доступа, администратор имеет полный доступ, разработчики имеют все права кроме управления ролями, обычные пользователи имеют доступ только к управлению задачами;
  • Распределённое развертывание: поддерживается распределённое выполнение, система поддерживает развертывание в кластере, что гарантирует высокую доступность выполнения задач;
  • Эластичное планирование: при появлении новых машин для выполнения задач или их выходе из строя, следующее планирование будет перераспределять задачи; - [ ] Стратегия маршрутизации: система предоставляет множество стратегий маршрутизации при развертывании в кластере, включая: круговой метод, случайный выбор, отказоустойчивый метод, перенаправление занятых;
  • Отказоустойчивость: при выборе стратегии "отказоустойчивости", если одна из машин в кластере выходит из строя, система автоматически переключается на другую рабочую машину для отправки запроса на выполнение;
  • Блокировка: стратегия обработки при слишком частом выполнении задач, включает: последовательное выполнение на одной машине (по умолчанию), игнорирование последующих запросов, перезапись предыдущих запросов;
  • Управление временем ожидания: поддерживается настройка времени ожидания задач, задача будет прервана при превышении этого времени;
  • Механизм повторной попытки: поддерживается настройка количества попыток повторной отправки задач, задача будет повторно отправлена согласно настроенным параметрам после неудачной попытки;
  • Фабрика сообщений: по умолчанию предоставляет возможность отправки сообщений через почтовую службу, при этом оставляются расширяемые интерфейсы для удобной реализации отправки SMS, DingTalk и других типов сообщений;
  • Почтовое оповещение: в случае сбоя задачи поддерживается отправка уведомлений на электронную почту, а также конфигурация нескольких адресов для рассылки уведомлений; - [ ] Отчеты по выполнению: поддерживает реальное отображение данных выполнения, а также отчеты по планированию, такие как график распределения дат планирования, график распределения выполнения групп задач и т. д.;
  • Триггер событий: помимо триггера задач через "cron" и "зависимости задач", предоставляется API для одноразового запуска задач;
  • Скриптовые задачи: поддерживает создание и выполнение скриптовых задач на основе GLUE распределённой платформы, включая Shell, Python, NodeJS и другие типы скриптов;
  • Параллельное выполнение: система поддерживает параллельное выполнение задач через многопоточность, что гарантирует точное выполнение планирования и предотвращает заторы;
  • Изоляция при понижении уровня: потоки планирования изолированы и разделены, медленные задачи автоматически понижаются до "slow" потока, что предотвращает исчерпание потоков планирования и повышает стабильность системы;
  • Gradle: будет публиковаться последняя стабильная версия в центральный репозиторий Gradle, что облегчит доступ и использование пользователями;
  • Maven: будет публиковаться последняя стабильная версия в центральный репозиторий Maven, что облегчит доступ и использование пользователями; - [ ] Однородность: на основе Redis распределённые замки обеспечивают конечную однородность распределённого планирования, каждое планирование задачи вызывает только одно выполнение;
  • Полностью асинхронное: процесс планирования задач полностью асинхронизирован, включая асинхронное планирование, асинхронное выполнение и асинхронный обратный вызов, эффективно снижает нагрузку при плотном планировании, теоретически поддерживаются задачи любой продолжительности;
  • Независимость от языка: система предоставляет независимый от языка RESTful API сервис, позволяющий сторонним разработкам любого языка интегрироваться с Task Manager;
  • Интернационализация: административная система поддерживает международные настройки, предлагая два варианта языка — китайский и английский, по умолчанию используется китайский язык;
  • Контейнеризация: предоставляются официальные образы Docker, которые регулярно обновляются и публикуются на Docker Hub, что позволяет использовать продукт сразу после установки;

Способы развертывания

  1. Выполнить файл job-plus.sql в директории sql для создания таблиц базы данных, необходимых для task_manage
  2. Изменить способ подключения к базе данных в файле application-local.yml
  3. Загрузить через FTP файлы job-plus-1.0-SNAPSHOT.jar, start.sh и stop.sh на сервер в указанную директорию
  4. Войти в директорию на сервере и запустить команду nohup sh start.sh & для успешного старта 5.Проверьте процесс запуска программы с помощью команды netstat -anp | grep 18080.
  5. Пройдите по адресу http://localhost:18080/index.html для управления задачами через веб-интерфейс.## Онлайн-демонстрация

http://jobplus.dianjiu.org.cn (в процессе развертывания...)

Проектные изображения

Демонстрация страниц

Логин

Логин

Дашборд

Дашборд

Управление задачами => Список задач

Список задач

Управление задачами => Журнал выполнения

Журнал выполнения

Управление задачами => Генератор (выключен cron-генератор)

Генератор выключен

Управление задачами => Генератор (включен cron-генератор)

Генератор включен

Демонстрация базы данных

Таблица информации о задачах

t_task_details

Таблица журнала выполнения

t_task_records

Таблица информации об ошибках

t_task_error

Обновления

Описание проекта Job Plus

Обновления проекта Job Plus

Размышления над распределёнными ID в проекте Job Plus

Размышления над стратегиями выполнения в проекте Job Plus

О компании "Пункт девять"

Персональный сайт

Публичный аккаунт

Последние благодарности

Благодарю следующие открытые проекты за предоставленные примеры

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Лёгкая распределённая система управления планированием задач. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dianjiu-job-plus.git
git@api.gitlife.ru:oschina-mirror/dianjiu-job-plus.git
oschina-mirror
dianjiu-job-plus
dianjiu-job-plus
dev