earth-frost
earth-frost — это легковесная распределённая система управления задачами.
Описание
Среда
Функции 1.0.0
1.1.0
1.2.0
Разработка
frost-api
Внешние сущности и интерфейсы.
frost-core
Определение интерфейсов и реализаций для основных функций планирования, выполнения, регистрации и обнаружения.
frost-center
Сервис центра планирования, включающий аутентификацию и пользовательский интерфейс, основанный на core для реализации логики планирования.
frost-executor
Исполнительный сервис, основанный на core для выполнения задач, включая примеры разработки скриптов задач и конфигурационные образцы.
frost-client
Клиентский API, который может использоваться сторонними проектами для взаимодействия с центром планирования.
Быстрое начало работы
Скачайте и установите версию Redis 2.8 или выше. Можно использовать как одиночный сервер, так и кластер. Для кластера каждый узел должен быть настроен на использование одного и того же сервиса Redis.
Центр планирования и исполнители поддерживают кластеризацию. В кластере каждый узел требует одинаковой конфигурации Redis.
Распакуйте исходный код и импортируйте его в IDE в формате Maven. Структура исходного кода соответствует описанной в разделе «Разработка».
# Логин
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
После правильной настройки проект можно скомпилировать с помощью команды mvn package (jar или war). Доступ к центру планирования осуществляется по адресу http://localhost:20000/center. После входа вы можете перейти на страницу отчётов.
После успешного входа перейдите на страницу отчётов.
Поддерживается кластеризация для обеспечения доступности центра планирования.
В кластере необходимо обеспечить согласованность логинов и использование одинаковых настроек Redis. Рекомендуется использовать Nginx для балансировки нагрузки на центр планирования. Работа с шардингом (sharding)
Получение шардинга:
JobSharding sharding = ctx.getSharding();
// Индекс шардинга int index = sharding.getIndex();
// Общее количество шардов int total = sharding.getTotal();
... бизнес-логика }
Создайте задачу, следуя примеру выше. Выберите «Запуск на шардах». Можно использовать указанное количество исполнителей для поддержки динамического масштабирования или указать общее количество шардов.
Перейдите в раздел «Управление исполнителями», чтобы увидеть исполнителей онлайн.
2.1 Создание задачи
Следуйте разделу разработки примера или разделу сценария задачи.
2.2 Выполнение задачи один раз
Нажмите кнопку «Выполнить один раз» в панели действий, чтобы запустить задачу один раз.
2.3 Приостановка задачи
Щелкните кнопку «Приостановить» в панели действий, чтобы приостановить выполнение задачи. Диспетчер больше не будет выполнять эту задачу.
2.4 Возобновление задачи
Щелкните кнопку «Возобновить» в панели действий, чтобы возобновить приостановленную задачу.
2.5 Редактирование задачи
Щелкните кнопку «Редактировать» в панели действий, чтобы изменить свойства задачи. Обратитесь к свойствам конфигурации задачи для изменений.
2.6 Онлайн-редактирование скрипта
Щелкните кнопку «Скрипт» в панели действий, чтобы перейти на страницу онлайн-редактирования скрипта. Здесь можно изменить исходный код задачи сценария.
2.7 Переход к журналу задач
Щелкните кнопку «Журнал» в панели действий, чтобы перейти к странице журнала диспетчера. Отображаются только записи для этой задачи.
2.8 Удаление задачи
Щелкните кнопку «Удалить» в панели действий, чтобы удалить задачу.
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 )