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

OSCHINA-MIRROR/justlive1-earth-frost

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

earth-frost

earth-frost — это легковесная распределённая система управления задачами.

Описание

  • Разделение модулей планирования и выполнения задач.
  • Использование Redis в качестве базы данных.
  • Реализация регистрации и обнаружения сервисов на основе модели подписки.

Среда

  • Angular: v1.x
  • JDK: 1.8+
  • Maven: 3+
  • Redis: 2.8+
  • Spring boot: 2.x
  • Thymeleaf: 3

Функции 1.0.0

  • Простота использования и поддержка веб-интерфейса для управления CRUD-задачами.
  • Динамическое изменение начала и остановки задач.
  • Поддержка кластеризации для центра планирования задач с возможностью распределения различных типов задач.
  • Выполнение задач в кластере с возможностью группировки и мониторинга через интерфейс центра планирования.
  • Масштабируемость и автоматическое обнаружение сервисов с помощью Redis-подписки, включая своевременное обнаружение добавления и удаления сервисов.
  • Возможность повторных попыток после сбоя.
  • Мониторинг задач и оповещение о проблемах.
  • Динамическая компиляция задач с поддержкой редактирования исходного кода задач через веб-интерфейс и создания новых задач.
  • Поддержка родительских и дочерних задач.
  • Отчётность о выполнении задач.

1.1.0

  • Оповещение о проблемах через WeChat.
  • Добавление информации о времени выполнения в журнал планирования.
  • Механизм оповещения о тайм-аутах задач.
  • Поддержка разделения задач на части.
  • Поддержка задач SimpleTrigger.
  • Поддержка разработки исполнителей для проектов без использования Spring.
  • Misfire.

1.2.0

  • Исправление проблемы с многократным выполнением разделенных на части родительских и дочерних задач.
  • Увеличение максимального количества записей в журнале.
  • Пример использования системы в проекте на базе Spring.

Разработка

frost-api
    Внешние сущности и интерфейсы.
frost-core
    Определение интерфейсов и реализаций для основных функций планирования, выполнения, регистрации и обнаружения.
frost-center
    Сервис центра планирования, включающий аутентификацию и пользовательский интерфейс, основанный на core для реализации логики планирования.
frost-executor
    Исполнительный сервис, основанный на core для выполнения задач, включая примеры разработки скриптов задач и конфигурационные образцы.
frost-client
    Клиентский API, который может использоваться сторонними проектами для взаимодействия с центром планирования.

Быстрое начало работы

Запуск базы данных Redis

Скачайте и установите версию Redis 2.8 или выше. Можно использовать как одиночный сервер, так и кластер. Для кластера каждый узел должен быть настроен на использование одного и того же сервиса Redis.

Центр планирования и исполнители поддерживают кластеризацию. В кластере каждый узел требует одинаковой конфигурации Redis.

Импорт исходного кода

Распакуйте исходный код и импортируйте его в IDE в формате Maven. Структура исходного кода соответствует описанной в разделе «Разработка».

Настройка центра планирования

1. Описание конфигурации

# Логин
spring.boot.auth.enabled=true
spring.security.user.name=frost
spring.security.user.password=frost

# Отправка оповещений по электронной почте
spring.mail.host=smtp.mail.com
spring.mail.username=
spring.mail.password=

# Уведомления по электронной почте
frost.notifier.mail.enabled=true
frost.notifier.mail.from=${spring.mail.username}
frost.notifier.mail.to=
frost.notifier.mail.subject=#{job.name} (#{job.id}) throws an exception
frost.notifier.mail.text=#{job.name} (#{job.id}) \n #{event.message}

# Уведомления через WeChat
frost.notifier.dingtalk.enabled=false
frost.notifier.dingtalk.subject=There is something wrong with #{job.name} (#{job.id})
frost.notifier.dingtalk.text=#{job.name} (#{job.id}) \n #{event.message}
frost.notifier.dingtalk.accessToken=
frost.notifier.dingtalk.linkUrl=localhost:20000/center

# Системные настройки
frost.system.corePoolSize=50
frost.system.maximumPoolSize=50
frost.system.keepAliveTime=300
frost.system.queueCapacity=200
# Количество рабочих в центре планирования
frost.system.workers=10
# Максимальное количество параллельных задач
frost.system.parallel=2

# Настройки Redis
# 0: Одиночный сервер, 1: Кластер, 2: Облачный режим, 3: Режим дозорного, 4: Ведущий-ведомый
frost.redisson.mode=0

# Общие настройки
frost.redisson.password=
frost.redisson.slaveConnectionPoolSize=50
frost.redisson.masterConnectionPoolSize=50
frost.redisson.timeout=3000

# Одиночный сервер
frost.redisson.address=redis://localhost:6379

# Кластер
frost.redisson.nodeAddresses=redis://localhost:6379,redis://localhost:6380,redis://localhost:6381
frost.redisson.scanInterval=2000

# Облачный режим
frost.redisson.nodeAddresses=redis://localhost:6379,redis://localhost:6380,redis://localhost:6381
frost.redisson.scanInterval=2000
frost.redisson.dnsMonitoringInterval=5000

# Режим дозорного
frost.redisson.sentinelAddresses=redis://localhost:6379,redis://localhost:6380,redis://localhost:6381
frost.redisson.scanInterval=2000
frost.redisson.masterName=mymaster

# Ведущий-ведомый
frost.redisson.masterAddress=redis://127.0.0.1:6379
frost.redisson.slaveAddresses=redis://localhost:6380,redis://localhost:6381
frost.redisson.dnsMonitoringInterval=5000

2. Развёртывание проекта

После правильной настройки проект можно скомпилировать с помощью команды mvn package (jar или war). Доступ к центру планирования осуществляется по адресу http://localhost:20000/center. После входа вы можете перейти на страницу отчётов. Страница входа После успешного входа перейдите на страницу отчётов. Отчётная страница

3. Кластеризация

Поддерживается кластеризация для обеспечения доступности центра планирования.

В кластере необходимо обеспечить согласованность логинов и использование одинаковых настроек Redis. Рекомендуется использовать Nginx для балансировки нагрузки на центр планирования. Работа с шардингом (sharding)

Получение шардинга:

JobSharding sharding = ctx.getSharding();

// Индекс шардинга int index = sharding.getIndex();

// Общее количество шардов int total = sharding.getTotal();

... бизнес-логика }

2. Создание задачи в центре диспетчеризации

Создайте задачу, следуя примеру выше. Выберите «Запуск на шардах». Можно использовать указанное количество исполнителей для поддержки динамического масштабирования или указать общее количество шардов.

Добавление задачи

Управление задачами

1. Список исполнителей

Перейдите в раздел «Управление исполнителями», чтобы увидеть исполнителей онлайн.

Список исполнителей

  • Группа исполнителей: исполнители группируются на основе конфигурации файла frost.job.executor.key. Обратите внимание: если группы одинаковы и значение @Job одинаково, логика IJob должна быть полностью одинаковой.
  • Имя: имя приложения исполнителя, которое помогает различать и управлять им.
  • Информация: при раскрытии группы отображается список задач, зарегистрированных под этим исполнителем. При объединении групп отображается количество исполнителей в сети для этой группы.

2. Управление задачами

2.1 Создание задачи

Следуйте разделу разработки примера или разделу сценария задачи.

2.2 Выполнение задачи один раз

Нажмите кнопку «Выполнить один раз» в панели действий, чтобы запустить задачу один раз.

Выполнение задачи

2.3 Приостановка задачи

Щелкните кнопку «Приостановить» в панели действий, чтобы приостановить выполнение задачи. Диспетчер больше не будет выполнять эту задачу.

Приостановка задачи

2.4 Возобновление задачи

Щелкните кнопку «Возобновить» в панели действий, чтобы возобновить приостановленную задачу.

2.5 Редактирование задачи

Щелкните кнопку «Редактировать» в панели действий, чтобы изменить свойства задачи. Обратитесь к свойствам конфигурации задачи для изменений.

2.6 Онлайн-редактирование скрипта

Щелкните кнопку «Скрипт» в панели действий, чтобы перейти на страницу онлайн-редактирования скрипта. Здесь можно изменить исходный код задачи сценария.

2.7 Переход к журналу задач

Щелкните кнопку «Журнал» в панели действий, чтобы перейти к странице журнала диспетчера. Отображаются только записи для этой задачи.

2.8 Удаление задачи

Щелкните кнопку «Удалить» в панели действий, чтобы удалить задачу.

3. Использование client

3.1 Зависимость от frost-client

<dependency>
    <groupId>vip.justlive</groupId>
    <artifactId>frost-client</artifactId>
</dependency>

3.2 Инициализация client

ClientProperties clientProps = new ClientProperties();
clientProps.setBaseUrl("http://localhost:20000/center");
clientProps.setUsername("frost");
clientProps.setPassword("frost");
JobApiFacade jobApiFacade = new JobApiFacadeImpl(clientProps);

3.3 Вызов JobApiFacade для выполнения операций

Контактная информация

E-mail: qq11419041@163.com

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

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

Введение

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

Обновления (3)

все

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/justlive1-earth-frost.git
git@gitlife.ru:oschina-mirror/justlive1-earth-frost.git
oschina-mirror
justlive1-earth-frost
justlive1-earth-frost
master