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

OSCHINA-MIRROR/daye_daye-job-dispatcher

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

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 — планировщики процессов, приглашаем всех сравнить и высказать своё мнение.

Архитектура программного обеспечения

Описание архитектуры программного обеспечения:

  1. Планировщик времени: основан на Quartz, запускает соответствующий Job по расписанию.

  2. Планировщик заданий: можно зарегистрировать JobBuilder (включая отношения зависимостей подзадач), после получения сигнала запуска планировщик заданий генерирует экземпляр JobBox (включая время партии и состояние выполнения задачи) в соответствии со сборщиком. В соответствии с порядком времени JobBox помещается в очередь, JobBox во главе очереди будет потреблён, то есть сигнал будет отправляться последовательно в соответствии с отношениями топологии до тех пор, пока все подзадачи не будут выполнены, затем выполнение следующего JobBox продолжится.

Пример очереди задач планировщика:

Пример очереди задач планировщика

Пример карты топологии задач:

Пример карты топологии задач

Используемые фреймворки: JDK1.8, SpringBoot2.0, Quartz, JPA, Echarts, Amazeui, Swagger2.

Инструкция по установке

  1. Измените соответствующую конфигурацию источника данных jdbc и зависимость драйвера jdbc в pom.

  2. На основе Springboot используйте maven для упаковки в jar и запустите его.

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

  1. Среда JDK1.8, доступ к главной странице через порт по умолчанию в браузере.

  2. Зарегистрируйте задачу в планировщике через интерфейс quartz/registerjob, передав json-файл конфигурации задания. Конкретные шаги следующие:

    1. Клиентская задача регистрирует периодическую задачу Job в планировщик. http://ip:port/quartz/register?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

    }

    1. Задача клиента уведомляет планировщик о статусе выполнения задачи.

    UNSTART("Не начато", 0),TRIGGERED("Запущено", 1),STARTED("Выполняется", 2),NEED_RESTART("Требуется перезапуск", 3), PAUSED("Приостановлено", 4),FINISHED("Завершено", 5);

    http://ip:port/task/call?jobcode=job1&taskcode=task2&status=0

    1. Проверьте статус очереди ожидающих задач и статус выполнения текущих задач (через веб-интерфейс).

Участие в проекте

  1. Fork текущего репозитория.
  2. Создайте ветку Feat_xxx.
  3. Отправьте код.
  4. Создайте запрос на вытягивание.

Навыки работы с кодом Cloud

  1. Используйте Readme_XXX.md для поддержки разных языков, таких как Readme_en.md, Readme_zh.md.
  2. Официальный блог Code Cloud: blog.gitee.com.
  3. Вы можете посетить этот адрес: https://gitee.com/explore, чтобы узнать о выдающихся проектах с открытым исходным кодом на Code Cloud.
  4. GVP (GVP) — это аббревиатура от «Наиболее ценные проекты с открытым исходным кодом» на Code Cloud, что является результатом комплексной оценки проектов с открытым исходным кодом.
  5. Официальное руководство по использованию Code Cloud: https://gitee.com/help.
  6. Лица обложки Code Cloud — это серия, демонстрирующая элегантность членов Code Cloud: https://gitee.com/gitee-stars/.

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

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

Введение

Это китайский язык. Это описание отечественного движка для управления процессами на основе событий, преимуществом которого является автоматическое создание графа зависимостей задач и визуализация выполнения подзадач с помощью диаграмм состояний и временных шкал. Развернуть Свернуть
AFL-3.0
Отмена

Обновления

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

Участники

все

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

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