Открыть исходный код непросто, прошу поставить звезду, чтобы больше людей могли использовать его. Вместе мы сможем использовать и улучшать код.
После перехода проекта от распределённой системы к микросервисной системе контроль за состоянием сервисов стал особенно важным. В Spring Cloud можно использовать как Nacos, так и Eureka для мониторинга и управления состоянием онлайн и офлайн сервисов. Иногда может потребоваться временно добавить новый сервисный узел, и в этом случае неудобно изменять конфигурацию вызовов IP для каждого существующего сервиса. Xxl-Job — это компонент распределённого планирования задач, который значительно упрощает управление задачами различных сервисных модулей. Однако перед использованием необходимо настроить список адресов xxl-job-admin. Если мы временно отключим определённый сервис в центре регистрации, этот сервис всё равно будет отображаться как активный в списке исполнителей xxl-job-admin, что не способствует единообразию управления. Чтобы решить эту проблему конфигурации и проблему онлайн-офлайн сервисов, появился xxl-job-plus, который лучше подходит для обслуживания SpringCloud.
Xxl-job-plus — это расширение xxl-job, которое позволяет интегрироваться с центром регистрации без изменения исходного кода xxl-job. Оно поддерживает мониторинг состояния онлайн и офлайн служб xxl-job-admin и исполнителей, а также обеспечивает автоматическое включение, обновление и остановку исполнителей в соответствии с изменениями в xxl-job-admin. Больше не нужно настраивать отдельные IP и порты для исполнителей (IP и порт берутся из центра регистрации), а также не требуется настраивать адрес администратора (динамически извлекается из центра регистрации). Также нет необходимости настраивать XxlJobExecutor, пакет автоматически регистрирует его. На данный момент поддерживается Nacos Discovery, поддержка Eureka появится в следующей версии.
Xxl-job-plus использует технологию расширения интерфейса и динамического отражения для модификации и внедрения конфигураций в существующую систему xxl-job-core. Сильная зависимость от версии xxl-job-core означает, что рекомендуется использовать соответствующую версию.
jdk 1.8+
nacos-discovery-spring-boot-starter:0.2.8+ | spring-cloud-starter-alibaba-nacos-discovery:2.2.5.RELEASE +
xxl-job-core:2.3.1+
<dependency>
<groupId>com.justtoplay</groupId>
<artifactId>xxl-job-plus</artifactId>
<version>${соответствующая версия xxl-job-core}</version>
</dependency>
Эта часть, за исключением интеграции с Nacos, следует инструкциям xxl-job.
Загрузите исходный код xxl-job: http://gitee.com/xuxueli0323/xxl-job
Создайте базу данных: /xxl-job/doc/db/tables_xxl_job.sql
Добавьте зависимость xxl-job-admin в проект pom, убедитесь, что версия nacos-client соответствует версии сервера nacos.
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${номер версии}</version>
</dependency>
Измените файл application.properties проекта xxl-job-admin:
a. Измените конфигурацию базы данных:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
b. Добавьте конфигурацию центра регистрации:
spring.application.name=xxl-job-admin
nacos.discovery.server-addr=127.0.0.1:8848
nacos.discovery.register.ip=127.0.0.1
nacos.discovery.register.port=${server.port}
nacos.discovery.namespace=
nacos.discovery.auto-register=true
Измените logback-файл проекта xxl-job-admin:
<property name="log.path" value="./logs/xxl-job/xxl-job-admin.log"/>
Запустите проект.
Проверьте, успешно ли он зарегистрирован в центре регистрации.
Посетите центр управления:
Скачайте образ (рекомендуется указать номер версии):
docker pull justtoplay/xxl-job-admin:{указать номер версии}
Создайте контейнер и запустите его:
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root --spring.application.name=xxl-job-admin --nacos.discovery.server-addr=127.0.0.1:8848 --nacos.discovery.register.ip=127.0.0.1 --nacos.discovery.register.port=8080 --nacos.discovery.namespace= --nacos.discovery.auto-register=true" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d justtoplay/xxl-job-admin:{указать номер версии}
Проверьте успешность регистрации и возможность доступа к центру управления.
Добавьте зависимости в pom бизнес-проекта:
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${версия xxl-job-core}</version>
</dependency>
<dependency>
<groupId>com.justtoplay</groupId>
<artifactId>xxl-job-plus</artifactId>
<version>${версия xxl-job-core}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Интегрируйте Nacos Discovery:
Для Spring Boot проекта:
a. Измените pom:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${совместимая с сервером версия клиента nacos}</version> **2. Модификация файла конфигурации application.properties в бизнес-проекте**
spring.application.name=executor-sample
nacos.discovery.server-addr=127.0.0.1:8848
nacos.discovery.namespace=
nacos.discovery.auto-register=true
Проект Spring Cloud
1. Модификация POM
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${и соответствующая версия клиента сервера Nacos}</version>
</dependency>
2. Модификация файла конфигурации application.properties в бизнес-проекте
spring.application.name=executor-sample
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.namespace=
# xxl-job-admin регистрируется в центре регистрации с именем, по умолчанию xxl-job-admin, настраивать не нужно. Если имя регистрации xxl-job-admin изменено, пожалуйста, измените его синхронно.
xxl.job.plus.admin.service-name=xxl-job-admin
# executor регистрируется в списке исполнителей xxl-job-admin с именем, по умолчанию таким же, как spring.application.name, настраивать не требуется.
xxl.job.plus.executor.service-name=
# Используйте значение по умолчанию, настраивать не обязательно.
xxl.job.plus.admin.access-token=
xxl.job.plus.admin.context-path=
xxl.job.plus.executor.log-path=
xxl.job.plus.executor.log-retention-days=
Запустите проект.
Проверьте, зарегистрировался ли сервис в центре регистрации.
Войдите в xxl-job-admin и вручную добавьте исполнителя, введите имя исполнителя, выберите автоматическую регистрацию и сохраните. Вы увидите, что машина в сети появится в списке.
Центр регистрации отключает службы xxl-job-admin онлайн, служба executor автоматически обновляет локальный кэш, больше не отправляет пульс отключённому xxl-job-admin. Когда новый xxl-job-admin подключится к сети, он автоматически отправит пульс. Из-за задержки подписки на состояние nacos и задержки пульса xxl-job-core, в xxl-job-admin будет определённая задержка в состоянии online службы executor.
Когда центр регистрации отключает службу executor онлайн, служба executor на сервере автоматически запустит или остановит состояние службы executor в xxl-job-admin. Из-за задержки подписки на состояние nacos и задержки пульса xxl-job-core в xxl-job-admin будет определённая задержка в состоянии службы executor online.
Приглашаем внести свой вклад в проект! Например, отправьте PR для исправления ошибки или создайте Issue для обсуждения новой функции или изменения.
Разработка с открытым исходным кодом — это непросто. Если вы пользуетесь преимуществами этого продукта с открытым исходным кодом, то поддержите автора чашкой чая.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )