Job-Dispatcher
Это рабочий поток и планировщик задач.
Email: 783380930@qq.com
Приглашаем присоединиться к обсуждению в QQ: 558192118
Адрес GitHub: https://github.com/xuda783380930/job-dispatcher.git
Базовая модель:
На основе события или по расписанию создаётся job, каждый job состоит из нескольких tasks, между tasks существуют последовательные или параллельные зависимости.
Реализация конкретной задачи инициируется клиентом (пользователь сам программирует), планировщик отвечает только за отправку HTTP-сигнала для запуска задачи в соответствии с топологией.
Клиент отправляет HTTP-уведомление о состоянии завершения задачи, планировщик на основе этого уведомления продолжает отправлять последующие сигналы планирования.
Использование:
Планирование задач, планирование событий или планирование задач по времени, например, корпоративное планирование ETL и т. д.
Особенности:
Планировщик отвечает только за планирование и организацию задач, не участвует в реализации и выполнении конкретных задач, его можно рассматривать как отправителя и получателя HTTP-сигналов, он обладает высокой универсальностью и естественным образом поддерживает гетерогенные системы, полностью отделяя планировщик от реализации задач.
Job-dispatcher — это независимый компонент микросервиса, а не платформа для работы, поэтому он не реализует адаптацию рабочей среды для различных типов задач, любое приложение, которое реализует интерфейс запуска подзадач HTTP, может быть клиентом job-dispatche, независимо от языка программирования или базы данных.
Простота использования, достаточно понимания SpringBoot и HTTP.
Аналогичные проекты: Azkaban от Linkedin, TASKCTL отечественного производства, Flowable /Activiti — планировщики процессов, приглашаем всех сравнить и высказать своё мнение.
Описание архитектуры программного обеспечения:
Планировщик времени: основан на Quartz, запускает соответствующий Job по расписанию.
Планировщик заданий: можно зарегистрировать JobBuilder (включая отношения зависимостей подзадач), после получения сигнала запуска планировщик заданий генерирует экземпляр JobBox (включая время партии и состояние выполнения задачи) в соответствии со сборщиком. В соответствии с порядком времени JobBox помещается в очередь, JobBox во главе очереди будет потреблён, то есть сигнал будет отправляться последовательно в соответствии с отношениями топологии до тех пор, пока все подзадачи не будут выполнены, затем выполнение следующего JobBox продолжится.
Пример очереди задач планировщика:
Пример карты топологии задач:
Используемые фреймворки: JDK1.8, SpringBoot2.0, Quartz, JPA, Echarts, Amazeui, Swagger2.
Измените соответствующую конфигурацию источника данных jdbc и зависимость драйвера jdbc в pom.
На основе Springboot используйте maven для упаковки в jar и запустите его.
Среда JDK1.8, доступ к главной странице через порт по умолчанию в браузере.
Зарегистрируйте задачу в планировщике через интерфейс quartz/registerjob, передав json-файл конфигурации задания. Конкретные шаги следующие:
//Пример конфигурации json:
{
"jobBoxBuilder": {
"jobCode": "job1",
"monitorParas":{mobileNos:[ "18621711111","18616152222"]} //Список номеров получателей SMS
"taskBuilderMap": [ //Список задач в Job
{
"taskCode": "task1",
"adapterPara": "http://172.11.33.44/trigger?jobCode=jos1&taskCode=task1",
"upstreamTaskCodes": ["task2"], //Зависит от task2, task1 выполняется после завершения task2
"overTime":"60" //Время ожидания 60 минут, иначе будет сообщено об ошибке
},
{
"taskCode": "task2",
"adapterPara": "http://172.11.33.44/trigger? jobCode=jos2&taskCode=task2",
//"upstreamTaskCodes":[],//Не зависит ни от какой задачи, этот атрибут можно не заполнять
//"overTime":"60" //Можно не заполнять
}
]
},
"jobCronExpression": "0 0/1 11 * * ?", //Выполнять один раз в день в 11 часов каждые 1 минуту
"filterCalendarName": "nonTradingDays" //Фильтровать дни по календарю nonTradingDays
}
UNSTART("Не начато", 0),TRIGGERED("Запущено", 1),STARTED("Выполняется", 2),NEED_RESTART("Требуется перезапуск", 3), PAUSED("Приостановлено", 4),FINISHED("Завершено", 5);
http://ip:port/task/call?jobcode=job1&taskcode=task2&status=0
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )