Навигация по серии:
Умение пользоваться реестром и узлами серии Elastic Job (2)
Начало работы с демонстрацией Elastic Job Series (3)
Elastic-Job — это решение для распределенного планирования, состоящее из двух независимых подпроектов: Elastic-Job-Lite и Elastic-Job-Cloud.
Elastic-Job-Lite позиционируется как легкое и децентрализованное решение, предоставляет услуги координации распределенных задач в виде jar-пакетов, внешними зависимостями являются только Zookeeper.
Адрес источника проекта==>shardingsphere-elasticjob
Требования к рабочей среде
Рамка | Версия |
---|---|
Java | JDK1.7+ |
Zookeeper | 3.4.6+ |
Maven | 3.0.4+ |
Описание структуры каталогов
elastic-job
├──elastic-job-lite lite父模块,不应直接使用
├ ├──elastic-job-lite-core Java支持模块,可直接使用
├ ├──elastic-job-lite-spring Spring命名空间支持模块,可直接使用
├ ├──elastic-job-lite-lifecyle lite作业相关操作模块,不可直接使用
├ ├──elastic-job-lite-console lite界面模块,可直接使用
├──elastic-job-example 使用示例
├ ├──elastic-job-example-embed-zk 供示例使用的内嵌ZK模块
├ ├──elastic-job-example-jobs 作业示例
├ ├──elastic-job-example-lite-java 基于Java的使用示例
├ ├──elastic-job-example-lite-spring 基于Spring的使用示例
├ ├──elastic-job-example-lite-springboot 基于SpringBoot的使用示例
├──elastic-job-doc markdown生成文档的项目,使用方无需关注
├ ├──elastic-job-lite-doc lite相关文档
Функции
- Координация распределенного планирования заданий
- Гибкое расширение и сжатие
- передача устаревшей работы
- Пропущенный перезапуск выполнения задания
- Согласованность сегментов заданий гарантирует, что один и тот же сегмент имеет только один экземпляр выполнения в распределенной среде.
- Самодиагностика и устранение проблем, вызванных распределенной нестабильностью
- Поддержка параллельного планирования заданий
- Поддержка операций жизненного цикла задания
- Богатые типы заданий
- Интеграция с Spring и предоставление пространства имен
- Управление платформой эксплуатации и обслуживания
- ......
Введение в концепцию Elastic-Job
Концепция шардинга
Для распределенного выполнения задач задачу необходимо разделить на несколько независимых элементов задачи, а затем распределенный сервер выполняет один или несколько фрагментированных элементов соответственно.
Например: есть задание, которое проходит через таблицу в базе данных, и есть 2 сервера. Для быстрого выполнения задания каждый сервер должен выполнять 50% задания. Чтобы выполнить это требование, задание можно разделить на 2 слайса, и каждый сервер выполняет 1 слайс. Логика обхода данных задания должна быть следующей: сервер А просматривает данные, идентификатор которых заканчивается нечетным числом, сервер Б просматривает данные, идентификатор которых заканчивается четным числом. Если он разделен на 10 слайсов, логика задания по обходу данных должна быть следующей: элемент слайса, назначенный каждому слайсу, должен иметь ID%10, а серверу А назначаются элементы слайса 0, 1, 2, 3, 4; сервер B назначается Assigned to shard items 5, 6, 7, 8, 9, прямым результатом является то, что сервер A просматривает данные, идентификатор которых заканчивается на 0-4, а сервер B просматривает данные, идентификатор которых заканчивается на 5-9.
Отделение сегментных элементов от бизнес-процессов
Elastic-Job не предоставляет функции обработки данных напрямую, фреймворк только выделяет элементы шардов каждому работающему серверу заданий, поэтому разработчикам необходимо самостоятельно обрабатывать соответствие между элементами шардов и реальными данными.
Применимые сценарии персонализированных параметров
Персонализированный параметр — shardingItemParameter, который может соответствовать соответствующей связи с элементом сегментирования и используется для преобразования номера элемента сегментирования в более читаемый бизнес-код.
Например: разделить базу данных по региональному уровню, база данных A — это данные Пекина, база данных B — данные Шанхая, база данных C — данные Гуанчжоу. Если конфигурация основана только на элементах сегментов, разработчикам необходимо знать, что 0 означает Пекин, 1 — Шанхай, 2 — Гуанчжоу. Разумное использование персонализированных параметров может сделать код более читабельным.Если конфигурация 0=Пекин, 1=Шанхай, 2=Гуанчжоу, то значения перечисления Пекина, Шанхая и Гуанчжоу можно использовать непосредственно в коде для полной фрагментации элементы и бизнес-логика, соответствующие отношения.
Распределенное планирование
Elastic-Job-Lite не имеет узла центра планирования заданий, но программы, основанные на структуре заданий развертывания, запускают планирование по отдельности, когда достигают соответствующей временной точки.
Реестр используется только для регистрации заданий и хранения информации мониторинга. Основной узел задания используется только для обработки таких функций, как сегментирование и очистка.
Высокая доступность работы
Elastic-Job-Lite обеспечивает самый безопасный способ выполнения заданий. Установите общее количество сегментов равным 1 и используйте более 1 сервера для выполнения задания, задание будет выполняться как 1 ведущий и подчиненный.
Как только сервер, выполняющий задание, выйдет из строя, сервер, ожидающий выполнения, возьмет на себя управление при следующем запуске задания. Эффект от включения функции аварийного переключения лучше, и она может гарантировать, что машина резервного копирования немедленно начнет выполнение резервного копирования в случае сбоя задания во время выполнения текущего задания.
Максимально используйте ресурсы
Elastic-Job-Lite также обеспечивает наиболее гибкий способ максимизировать производительность выполнения заданий. Задайте количество элементов сегмента больше, чем количество серверов, желательно больше, чем количество серверов, кратное числу, и задание будет разумно использовать распределенные ресурсы и динамически выделять элементы сегмента.
Например: 3 сервера разделены на 10 слайсов, тогда результатом распределения элементов слайсов будет сервер A=0,1,2, сервер B=3,4,5, сервер C=6,7,8,9. В случае сбоя сервера C результаты присвоения элемента сегмента: сервер A=0,1,2,3,4, сервер B=5,6,7,8,9. Максимально используйте существующие ресурсы для повышения пропускной способности без потери элементов сегментов.