Анализ распространенных инструментов планирования распределенных задач

распределенный

Жизнь слишком коротка, чтобы держать собаку

1. Предпосылки

  В повседневной работе вы будете сталкиваться с такими потребностями более или менее, и вам необходимо выполнять определенную задачу в определенное время или периодически выполнять определенную задачу. Подобные задачи обычно можно свести кзадача на время. Как говорится: где спрос, там и творчество. Чтобы удовлетворить потребности в задачах, рассчитанных на время, появились различные структуры планирования задач. Timer, ScheduledThreadPoolExecutor (что? Вы правильно прочитали, это также может выполнять временные задачи), Quartz и многое другое. Но с развитием распределенных и микросервисов вышеуказанной структуры планирования заданий недостаточно. В основном это следующие проблемы:

  • Невозможно узнать данные о выполнении задачи: например, список задач, статус выполнения задачи и т. д.;
  • Без перезапуска приложения параметры задачи не могут быть изменены динамически (без использования центра конфигурации);
  • В случае не перезапуска приложения невозможно управление жизненным циклом задачи: например, запуск, завершение, перезапуск, удаление и т. д.;
  • Отсутствие механизма оповещения о сбое задачи
  • Не подходит для распределенных сценариев

   Ниже Сяньюй проводит простой сравнительный анализ, основанный на трех широко используемых на рынке инструментах распределенного планирования задач, которые он изучил.

Во-вторых, сравнение распространенных инструментов распределенного планирования.

Из нескольких крупных платформ блогов и результатов опроса на Github чаще всего используются распределенные рамки планирования задач с открытым исходным кодом: Elastic-Job (Dangdang), Saturn (Vipshop), XXL-JOB (Популярные обзоры — личные).

основное введение

  • Elastic-Job: Elastic-Job — это распределенное решение для планирования с открытым исходным кодом Dangdang.com, которое в основном состоит из двух независимых подпроектов: Elastic-Job-Lite и Elastic-Job-Cloud. Elastic-Job-Lite позиционируется как легкое и децентрализованное решение, предоставляющее услуги по координации распределенных задач в виде jar-пакетов; Elastic-Job-Cloud адаптирует решение Mesos Framework собственной разработки, которое дополнительно обеспечивает управление ресурсами и распространение приложений. и изоляция процесса. (В настоящее время мы используем Elastic-Job-Lite)
  • Saturn: Saturn (система планирования задач) — это распределенная платформа планирования задач с открытым исходным кодом от Vipshop, которая заменяет традиционный метод пакетных заданий Linux Cron/Spring и обеспечивает унифицированную конфигурацию, унифицированный мониторинг, высокую доступность задач и параллельную обработку с сегментированием. Следует отметить, что Saturn — это распределенная среда планирования задач, основанная на Elastic-Job для вторичной разработки, поэтому Saturn в основном имеет некоторые функции Elastic-Job.
  • xxl-job: xxl-job — это платформа распределенного планирования задач, исходный код которой был открыт Сюй Сюэли в 2015 году. Изначально xxl-job разрабатывался на основе расширений Quartz с использованием блокировок базы данных, чтобы гарантировать выполнение задачи только одним узлом. В последних версиях xxl-job рефакторил основную логику планирования задач, убрал Quartz и выбрал самоисследование, а также разработал собственный модуль rpc. Он предназначен для быстрой разработки, прост в освоении, легковесен, легко расширяем и готов к использованию сразу после установки.

   С функциональной точки зрения все три вышеупомянутые платформы с открытым исходным кодом удовлетворяют потребности повседневного бизнеса. Следует отметить, что децентрализация и автономия службы Elastic-Job-Lite больше соответствуют распределенной концепции, в то время как Staurn и xxl-job сохраняют концепцию центра планирования. Еще одно существенное отличие состоит в том, что первые два используют Zookeeper в качестве реестра службы, а xxl-job использует метод БД для регистрации и обнаружения задач.

Сравнение функций

характеристика Elastic-Job xxl-job Saturn
Высокая доступность Благодаря регистрации и обнаружению zookeeper серверы могут добавляться динамически. На основе конкурирующих блокировок базы данных только один узел может выполнять задачи и поддерживать горизонтальное расширение. Вы можете вручную добавлять запланированные задачи, запускать и приостанавливать задачи, а также отслеживать То же, что и Elastic-Job
разделение задач Могу Могу Могу
интерфейс управления Существует платформа эксплуатации и обслуживания, которая обеспечивает быстрое изменение параметров задания, просмотр состояния измерения задания и сервера, а также операции по отключению, включению, остановке и удалению жизненных циклов задания, но остановленные задания не могут быть перезапущены, и нет механизм сигнализации. Создавайте, редактируйте, редактируйте код GLUE, управляйте жизненным циклом задания, отключайте/включайте, останавливайте и удаляйте, вы можете просматривать журнал планирования, отслеживать ход выполнения задачи, зависимость задачи, шифрование данных, оповещение по электронной почте (предоставляет API оповещения DingTalk, вы можете вторично разработка), текущие отчеты, интернационализация Как и в случае с Elastic-Job, задачи можно перезапускать, а в Executor предусмотрены функции управления и обслуживания, такие как извлечение трафика одним щелчком мыши и создание дампа одним щелчком мыши.
Простота разработки Простой Простой Простой

   В целом функции трех фреймворков примерно одинаковы, а некоторые дополнительные возможности отличаются. Однако с точки зрения платформы эксплуатации и обслуживания Elastic-Job несколько хуже двух последних, для Elastic-Job-Lite платформа эксплуатации и обслуживания является необязательным компонентом (в настоящее время в нашем проекте не используется) . В то же время, если вы хотите полностью контролировать распределение заданий через платформу эксплуатации и обслуживания, вам необходимо использовать Elastic-Job-Cloud, Elastic-Job-Lite не имеет функции распределения заданий.

Сравнение использования и активности сообщества

   Здесь мы напрямую смотрим на такие параметры, как звезда, проблема и участник на github.

1. Elastic-Job

Адрес на гитхабе:GitHub - elasticjob/elastic-job-lite: Elastic-Job is a distributed scheduled job framework, based on Quartz and Zookeeper.

2. Saturn

  Адрес на гитхабе:Saturn

3. xxl-job

  Адрес на гитхабе:GitHub — xuxueli/xxl-job: платформа распределенного планирования задач (распределенная платформа планирования задач XXL-JOB).

   Судя по популярности и детализации Github, можно сказать, что xxl-job занимает первое место. По сравнению с долгосрочным отсутствием обновлений elastic-job, обслуживание кода и активность сообщества xxl-job по-прежнему очень высоки С этой точки зрения xxl-job по-прежнему очень удобен для пользователей.

3. Резюме

   Выше приведен простой анализ и сравнение трех наиболее часто используемых распределенных инструментов планирования задач. Конечно, в дополнение к этим трем популярным инструментам существуют также системы планирования заданий, такие как TBSchedule (среда планирования заданий, основанная на таймере с открытым исходным кодом в первые дни Taobao), расписание легких задач и другие среды планирования заданий, которые не будет представлен здесь Заинтересованные студенты Вы можете найти на github, чтобы узнать.

В этой статье используетсяmdniceнабор текста