Plataforma ligera de programación de tareas distribuida XXL-JOB

Plataforma de programación de tareas distribuida XXL-JOB


Introducción:

XXL-JOB es una plataforma de programación de tareas distribuida y liviana. Sus objetivos de diseño principales son un desarrollo rápido, aprendizaje simple, liviano y fácil expansión. El código fuente ahora está abierto y conectado a las líneas de productos en línea de muchas empresas, listo para usar de inmediato.

Documento oficial del sitio web

https://www.xuxueli.com/xxl-job/


característica

1. Simple: admite la operación CRUD de las tareas a través de la página web, operación simple, un minuto para comenzar;
2. Dinámico: admite la modificación dinámica del estado de la tarea, inicia / detiene las tareas y termina las tareas en ejecución, con efecto inmediato;
3. Centro de despacho HA (Central): La programación adopta un diseño central, los componentes de programación de desarrollo propio del "centro de despacho" y admite la implementación del clúster, lo que puede garantizar la HA del centro de despacho;
4. Actuador HA (distribuido): la tarea se ejecuta de manera distribuida, la tarea es "ejecutor" Apoyar la implementación del clúster para garantizar la ejecución de tareas HA;
5. Centro de registro: el ejecutor registrará automáticamente las tareas periódicamente, y el centro de despacho detectará automáticamente las tareas registradas y activará la ejecución. Al mismo tiempo, también admite la entrada manual de la dirección del actuador;
6. Expansión y contracción flexibles: una vez que una nueva máquina de actuador está en línea o fuera de línea, la tarea se redistribuirá durante la siguiente programación;
7.Estrategia de enrutamiento: Proporcione una implementación de clúster de actuador enriquecida Las estrategias de enrutamiento incluyen: primero, último, sondeo, aleatorio, HASH consistente, menos utilizado, menos utilizado recientemente, conmutación por error, transferencia ocupada, etc.
8. Conmutación por error: "Error" de selección de estrategia de enrutamiento de tareas En el caso de "transferencia", si una máquina en el grupo de actuadores falla, automáticamente pasará por error a un actuador normal para enviar solicitudes de programación.
9. Bloqueo de la estrategia de procesamiento: la estrategia de procesamiento cuando la programación es demasiado intensa y el ejecutor es demasiado tarde para procesar. Las estrategias incluyen: serie de una sola máquina (predeterminado), descartar la programación posterior y sobrescribir la programación anterior;
10. Control del tiempo de espera de la tarea: admite el tiempo de espera de la tarea personalizada, la tarea Ejecutar horas extras interrumpirá activamente la tarea;
11. Reintento de falla de tarea: admite tiempos de reintento de falla de tarea personalizada, cuando la tarea falla, se reintentará activamente de acuerdo con los tiempos de reintento de falla preestablecidos; la tarea de fragmentación admite la fragmentación Reintento de falla granular;
12. Alarma de falla de tarea; se proporciona una alarma de falla de correo electrónico predeterminada y las interfaces de expansión se reservan al mismo tiempo, lo que puede expandir fácilmente los métodos de alarma como SMS y clavado;
13. Tarea de difusión fragmentada: cuando se implementa el clúster de ejecutores y la estrategia de enrutamiento de tareas selecciona "difusión fragmentada", se transmitirá una programación de tareas para que todos los ejecutores del clúster realicen una tarea, y la tarea fragmentada se puede desarrollar de acuerdo con los parámetros de fragmentación. ;
fragmentación, fragmentación, tarea de transmisión al actuador como una dimensión para admitir la expansión dinámica del clúster del actuador, aumentando dinámicamente el número de fragmentos, procesos comerciales colaborativos; durante una gran cantidad de tráfico de datos, la operación puede mejorar significativamente las tareas: 14, fragmentación dinámica Potencia y velocidad de procesamiento.
15. Activación de eventos: además de activar la ejecución de tareas en "modo Cron" y "modo dependiente de la tarea", admite la activación de tareas basada en eventos. El centro de despacho proporciona servicios de API que desencadenan una única ejecución de tareas, que puede desencadenarse de manera flexible según los eventos comerciales.
16. Monitoreo del progreso de la tarea: admite el monitoreo en tiempo real del progreso de la tarea;
17. Registro continuo en tiempo real: admite la visualización en línea de los resultados de la programación y admite la visualización en tiempo real de la salida del registro de ejecución completo por parte del actuador en modo Rolling;
18. GLUE: proporciona Web IDE, soporte en línea Desarrolle código de lógica de tareas, publique dinámicamente, compile en tiempo real y omita el proceso de implementación y en línea. Admite 30 versiones de retroceso de versiones históricas.
19. Tareas de secuencia de comandos: admite el desarrollo y funcionamiento de tareas de secuencia de comandos en modo GLUE, incluidos Shell, Python, NodeJS, PHP, PowerShell y otros tipos de secuencias de comandos;
20. Tareas de línea de comandos: proporciona de forma nativa un controlador de tareas de línea de comandos genérico (tarea Bean, "CommandJobHandler") ; El lado comercial solo necesita proporcionar la línea de comando;
21. Dependencia de tareas: admite la configuración de dependencias de subtareas. Cuando la tarea principal se ejecuta y se ejecuta con éxito, activará automáticamente la ejecución de una subtarea, y varias subtareas se separan por comas;
22. Coherencia: el "centro de despacho" garantiza la coherencia de la programación distribuida del clúster mediante bloqueos de base de datos,


25. Cifrado de datos: la comunicación entre el centro de despacho y el actuador está cifrada para mejorar la seguridad del envío de información;
26. Alarma de correo electrónico: admite la alarma de correo electrónico cuando la tarea falla y admite la configuración de varias direcciones de correo electrónico para enviar correos electrónicos de alarma;
27. Push maven central Almacén: la última versión estable se enviará al almacén central de maven, que es conveniente para que los usuarios accedan y utilicen;
28. Informes en ejecución: admite la visualización en tiempo real de los datos en ejecución, como la cantidad de tareas, tiempos de programación y la cantidad de ejecutores; y informes de programación, como la programación Diagrama de distribución de fechas, diagrama de distribución exitosa de la programación, etc .;
29. Totalmente asíncrono: diseño e implementación completamente asincrónicos del proceso de programación de tareas, como programación asíncrona, operación asíncrona, devolución de llamada asíncrona, etc. operación;
30, lenguaje cruzado: el centro de despacho y los actuadores brindan un servicio de API RESTful independiente del idioma, un tercero puede, en consecuencia, cualquier centro de despacho de acoplamiento de idioma o implementar el actuador. Además, también se proporcionan otras soluciones en varios idiomas, como "modo multitarea" y "httpJobHandler";
31. Internacionalización: el centro de despacho admite configuraciones internacionales y ofrece dos idiomas opcionales, chino e inglés, y el predeterminado es chino;
32 、 Containerización: proporcione imágenes oficiales de la ventana acoplable y actualice y envíe la base de acoplamiento en tiempo real para realizar un uso más inmediato del producto;
33. Aislamiento del grupo de subprocesos: programe el grupo de subprocesos para el aislamiento y la división, las tareas lentas se degradan automáticamente a un grupo de subprocesos "Lentos" para evitar el consumo Envíe los subprocesos tanto como sea posible para mejorar la estabilidad del sistema;
34. Gestión de usuarios: admite la gestión en línea de los usuarios del sistema, y ​​hay dos funciones de administrador y usuario ordinario;
35. Control de autoridad: control de autoridad en la dimensión de los actuadores, los administradores tienen plena autoridad, usuarios ordinarios Necesidad de asignar permisos de ejecutor antes de permitir operaciones relevantes;

desplegar

拉取代码:这是我放到了自己 的 gitee 上,拉取速度非常快
git clone https://gitee.com/Liu_YiHong/xxl-job.git  
导入sql 文件到数据库MySQL
cd xxl-job/doc/db    //会有一份tables_xxl_job.sql 文件,导入到数据库就好。 
修改xxl-job-admin配置文件:
cd xxl-job/xxl-job-admin/src/main/resources
vim application.properties
修改如下 参数:
server.port=8086
spring.datasource.url=jdbc:mysql://数据库IP:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=0GXwwchW4rP
修改 xxl-job-executor-sample-springboot 配置文件:
cd xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources
vim application.properties
修改如下参数:
server.port=8087
xxl.job.admin.addresses=http://xxxxxxIP地址:8086/xxl-job-admin
cd xxl-job  //项目得根目录下打包
1·打包之前最好修改maven 得仓库地址,否则太慢。

Maven 配置
打开 Maven 的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在<mirrors></mirrors>标签中添加 mirror 子节点:

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

2· 执行打包命令
mvn clean package -Dmaven.test.skip=true
3·制作xxl-job-admin镜像
cd xxl-job-admin
docker build -t xxl-job-admin .
4`制作 xxl-jobs-pringboot 镜像
cd xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot
docker build -t xxl-jobs-pringboot .
5·编写docker-compose.yml 文件
version: '3'
services:
  xxl-job-admin:
    image: xxl-job-admin
    restart: always
    container_name: xxl-job-admin
    ports:
    - 8086:8086
    environment:
    - TZ=Asia/Shanghai
    volumes:
    - ./data/applogs:/data/applogs

  xxl-job-springboot:
    image: xxl-jobs-pringboot
    restart: always
    container_name: xxl-job-springboot
    ports:
      - 8087:8087
    environment:
    - TZ=Asia/Shanghai
6·启动服务:
docke-compose up -d
7·访问方式:
http://IP+端口号/xxl-job-admin

Supongo que te gusta

Origin blog.51cto.com/13746824/2535169
Recomendado
Clasificación