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

OSCHINA-MIRROR/LimboHome-flow-job

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

Введение

flowjob主要用于搭建统一的任务调度平台,方便各个业务方进行接入使用。项目在设计的时候,考虑了扩展性、稳定性、伸缩性等相关问题,可以作为公司的任务调度中间件被使用。

Онлайн-тестирование

Онлайн-тестирование

Логин: flowjob

Пароль: fjdemo

Функциональное описание

flowjob主要分为以下几个部分:

  • Broker: управляющий узел, который распределяет настроенные задачи по кластеру, управляет и распределяет задачи, а также отправляет Agent. Управляет и поддерживает регистрацию узлов Agent/Worker.
  • Agent: прокси-узел, который принимает информацию о задачах, отправленных Broker, создает задачи для выполнения Worker, управляет жизненным циклом задач, например, переходами рабочих процессов. Может быть независимо развернут, а также может зависеть от хоста. Этот узел также может уменьшить нагрузку на Broker, связанную с широковещательной передачей/Map/MapReduce и т.д., а также проблемы данных, вызванные запуском и остановкой в облаке.
  • Worker: рабочий узел, который отвечает за конкретное выполнение задач.
  • Console: управление задачами, такими как создание и обновление задач, с помощью API, предоставленных Broker.
  • Registry: регистратор, который в настоящее время использует DB в качестве регистратора. Предоставляет соответствующие интерфейсы, которые могут быть гибко упакованы на основе других компонентов, таких как zk, nacos и т.д.
  • Datasource: база данных для сохранения данных выполнения
    framework

    Типы расписания

    • Фиксированная скорость: после создания задачи, каждое расписание после отправки происходит через фиксированное время, после чего задача снова запускается.
    • Фиксированное задерживание: после создания задачи, каждое выполнение задачи после отправки (успешное или неудачное) происходит через фиксированное время, после чего задача снова запускается.
    • CRON: задача запускается в определенное время, указанное CRON-выражением.

    Стратегии распределения нагрузки

    • Случайное: задача случайным образом отправляется для выполнения на определённый Worker.
    • Полоса: задачи последовательно распределяются между Worker.
    • Наименее часто используемый: задача отправляется на Worker, который получил наименьшее количество задач в определённом временном окне.
    • Наименее часто используемый: задача отправляется на Worker, который не принимал задачи на протяжении наибольшего времени в определённом временном окне.
    • Consistent Hash: задачи с одинаковыми параметрами всегда отправляются на один и тот же узел.
    • Указанный узел: задача отправляется на указанный Worker для выполнения.

    Методы фильтрации узлов1. Экзекутор: задача отправляется только на Worker, который имеет соответствующий экзекутор.

    1. Теги: задача отправляется только на Worker, который имеет указанный тег.
    2. Емкость: фильтрация на основе использования очереди задач/процессора/памяти Worker.### Способы запуска задач* API: Задача запускается через указанный API.
    • Расписание: Broker автоматически собирает данные и расписание для соответствующей задачи.

    Типы задач

    По типу экземпляров задачи делятся на:

    • Независимая задача: При выполнении создается только один экземпляр задачи.
    • Поток задач: Представление в виде DAG, позволяет связывать задачи, и на основе этого представления может существовать несколько экземпляров задачи.
    • Независимая задержанная задача: После отправки выполняется в указанное время, создается один экземпляр задачи.

    По типу задачи делятся на:

    • Обычная: Соответствует определенному исполнителю, задача завершается после завершения выполнения.
    • Бродкаст: В указанное время задача отправляется на каждый доступный узел, и только после завершения всех подзадач задача считается завершенной.
    • Map: Включает два этапа — шардинг и мап. Шардинг выполняет разбиение на части, а мап выполняет каждую отдельную задачу.
    • MapReduce: В дополнение к этапу мап добавляется этап редьюс, который позволяет свести результаты всех задач мап.

    Для более подробного понимания использования различных типов задач можно обратиться к примерам.

    Помощь по использованию

    Установка сервера### Требования к среде

    • JDK 8
    • MySQL

    Шаг 1: Настройка базы данных

    В настоящее время используется FlywayDB для динамической инициализации данных.

    Настройка Описание
    spring.datasource.url Адрес подключения
    spring.datasource.username Имя пользователя
    spring.datasource.password Пароль

    Шаг 2: Упаковка сервисаСогласно потребностям измените конфигурацию| Настройка | Описание |

    |-----------------------------------------|--------------------------------------------------------------------------------------| | flowjob.broker.name | Имя узла, должно быть уникальным в глобальном масштабе. По умолчанию не требуется настройка, автоматически генерируется. | | flowjob.broker.host | Хост, предоставляемый worker'ам. Может быть доменом или IP-адресом. Если не указан, автоматически обнаруживается адрес хоста, отличный от 127.0.0.1. В случае нескольких сетевых карт рекомендуется явно указать хост. | | flowjob.broker.port | Порт, предоставляемый worker'ам. Если не указано это значение, будет использоваться значение ${server.port}; если и это значение отсутствует, будет использован порт 8080. | | flowjob.broker.scheme | Тип протокола RPC. По умолчанию http. Должен совпадать с настройками worker'ов. | | flowjob.broker.heartbeat-interval | Интервал времени для отправки пульса broker'ом, миллисекунды. По умолчанию 2000 | | flowjob.broker.heartbeat-timeout | Время ожидания пульса broker'ом, миллисекунды. По умолчанию 5000 | | flowjob.broker.worker.heartbeat-timeout | Время ожидания пульса worker'ом, миллисекунды. По умолчанию 5000 |## Корневая директория проектаДля упаковки и сборки проекта выполните следующую команду, используя параметр -P для указания окружения, например, для разработки -P dev

    mvn clean package -Dmaven.test.skip=true -Pdev

    Развертывание Worker

    Для веб-приложений, которые используют Worker (хостовых приложений), можно использовать пример.

    Шаг 1: Добавление зависимостей

    Для проектов Maven

    <dependency>
        <groupId>io.github.limbo-world</groupId>
        <artifactId>flowjob-worker-spring-boot-starter</artifactId>
        <version>2.1.0</version>
    </dependency>

    Шаг 2: Изменение конфигурации

    Конфигурация Worker

    Настройка Описание
    flowjob.worker.name Уникальное имя узла. По умолчанию, если не указано, будет сгенерировано автоматически.
    flowjob.worker.scheme Тип протокола RPC. По умолчанию http. Должен соответствовать настройкам Broker.
    flowjob.worker.host RPC хост. Это может быть доменное имя или IP-адрес. Если не указано, будет автоматически обнаружено не-127.0.0.1 адрес. В случае нескольких сетевых карт, рекомендуется явно указать хост.
    flowjob.worker.port RPC порт. Если не указано, по умолчанию 9877.
    flowjob.worker.brokers Адреса узлов Broker. Можно указать несколько. См. конфигурацию в примере.
    flowjob.worker.heartbeat Интервал времени между запросами heartbeat от Worker к Broker. По умолчанию 2 секунды.
    flowjob.worker.tags Теги в формате k=v.

    Если вы хотите развернуть отдельно, можно использовать пример.| Настройка | Описание | |------------------------------------|----------------------------------------------------------------------| | flowjob.agent.enabled | Включить Agent | | flowjob.agent.autoStart | Автоматически запускать agent. В случае false пользователь может отправить событие запуска самостоятельно. | | flowjob.agent.host | RPC хост. Это может быть доменное имя или IP-адрес, например, если не указано, будет автоматически обнаружена не 127.0.0.1 адрес. В случае нескольких сетевых карт, рекомендуется явно указать хост. | | flowjob.agent.port | RPC порт. Если не указано, по умолчанию 9876. | | flowjob.agent.brokers | Адреса узлов Broker, можно указать несколько, см. конфигурацию в DEMO. | | flowjob.agent.datasource.url | URL подключения к базе данных H2, см. конфигурацию в DEMO. | | flowjob.agent.datasource.initTable | Инициализировать таблицу данных, true означает drop и создание. Если это задача с сохранением состояния, выберите false и оставьте управление ОП. |

    Передний конец приложения

    В рамках проекта был разработан соответствующий фронтенд, используя API: перейти

    Участие и вкладЕсли у вас есть предложения по улучшению проекта или вы хотите присоединиться к нам, вы можете использовать следующие способы:

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

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

Введение

Фреймворк для расписания задач FlowJob, поддерживающий задержку, планирование по времени, задачи с использованием cron; распределение задач поддерживает случайное распределение, циклическое распределение, распределение с использованием алгоритма консистентного хэширования, широковещательную рассылку, переключение на резервные системы, режим MapR... Развернуть Свернуть
Apache-2.0
Отмена

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

все

Участники

все

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

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