SchedulerX le permite ejecutar trabajos programados en aplicaciones Spring Cloud desplegadas en Enterprise Distributed Application Service (EDAS). Esta guía le muestra cómo crear un trabajo de tipo Simple Job Single-instance Edition, probarlo localmente y desplegarlo en EDAS.
SchedulerX es la plataforma distribuida de programación de trabajos de Alibaba Cloud. Ofrece las siguientes capacidades:
Precisión inferior al minuto: programe trabajos con granularidad de segundos mediante expresiones cron.
Alta disponibilidad: incluye failover integrado y ejecución confiable.
Modelos de ejecución distribuida: ejecute cargas de trabajo en paralelo con modelos como MapReduce.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una cuenta de Alibaba Cloud con EDAS activado
Acceso a la consola de EDASconsola de EDAS
Paso 1: Crear el proyecto Maven
Cree un proyecto Maven llamado scx-example.
Agregue las siguientes dependencias a su archivo pom.xml. Esta configuración utiliza Spring Boot 2.1.4.RELEASE con Spring Cloud Finchley.SR1.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<!-- SchedulerX Spring Boot starter -->
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>${schedulerx2.version}</version>
<!-- Exclude log4j if you use Logback -->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Spring Boot 1.x ha llegado al final de su ciclo de vida. Si aún utiliza Spring Boot 1.5.x con Spring Cloud Edgware, establezca la versión de Spring Cloud Alibaba en 1.5.1.RELEASE.
Paso 2: Crear el punto de entrada de la aplicación
Cree una clase de inicio llamada ScxApplication:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ScxApplication {
public static void main(String[] args) {
SpringApplication.run(ScxApplication.class, args);
}
}
Paso 3: Crear un servicio de prueba
Cree una clase de servicio administrada por Spring llamada TestService. Esta clase valida que la inyección de Inversión de Control (IoC) de Spring funcione correctamente en la clase del trabajo.
import org.springframework.stereotype.Service;
@Service
public class TestService {
public void test() {
System.out.println("---------IOC Success--------");
}
}
Paso 4: Implementar el procesador del trabajo
Cree una clase de trabajo llamada SimpleTask que implemente ScxSimpleJobProcessor. Esta clase define la lógica que se ejecuta cada vez que se activa el trabajo.
import com.alibaba.edas.schedulerx.ProcessResult;
import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import org.springframework.beans.factory.annotation.Autowired;
public class SimpleTask implements ScxSimpleJobProcessor {
@Autowired
private TestService testService;
@Override
public ProcessResult process(JobContext context) {
System.out.println("-----------Hello world---------------");
testService.test();
return new ProcessResult(true);
}
}
El método process devuelve ProcessResult(true) para indicar que la ejecución se completó correctamente. Spring inyecta automáticamente TestService mediante la anotación @Autowired.
Paso 5: Crear un trabajo programado en la consola de EDAS
Inicie sesión en la consola de EDASconsola de EDAS.
En la región test, cree un grupo de trabajos programados y anote el ID del grupo.
-
Dentro del grupo de trabajos, cree un trabajo con los siguientes parámetros:
Parámetro
Valor
Descripción
Application ID
El ID de grupo del paso anterior
Vincula el trabajo a su grupo de trabajos
Processor class name
SimpleTaskNombre completo de la clase que implementa la interfaz del trabajo
Task type
Stand-alone operation
Ejecuta el trabajo en una sola instancia
cron expression
0 * * * * ?Activa el trabajo una vez por minuto
Description
(Dejar en blanco)
Descripción opcional del trabajo
Task parameters
(Dejar en blanco)
Parámetros de ejecución opcionales
Paso 6: Configurar la aplicación
En src/main/resources, cree el archivo application.properties con la siguiente configuración:
server.port=18033
# SchedulerX connection settings
# Replace the placeholder values with your actual namespace and group credentials.
spring.schedulerx2.endpoint=acm.aliyun.com
spring.schedulerx2.namespace=<your-namespace-id>
spring.schedulerx2.groupId=<your-group-id>
spring.schedulerx2.appKey=<your-app-key>
Reemplace los siguientes marcadores de posición con sus valores reales:
|
Marcador de posición |
Descripción |
Ejemplo |
|
|
ID de namespace obtenido en la consola de EDAS |
|
|
|
ID de su grupo de trabajos programados |
Obtenido en el Paso 5 |
|
|
Clave de aplicación para autenticación |
|
La región test utiliza cn-test como regionName. Durante las pruebas locales, el tráfico viaja por Internet sin restricciones de permisos.
Paso 7: Ejecutar y verificar localmente
Ejecute el método main en ScxApplication para iniciar el servicio.
Revise la salida en la consola de su IDE. Cuando el trabajo se ejecuta correctamente, aparecen los siguientes mensajes una vez por minuto:
-----------Hello world---------------
---------IOC Success--------
Desplegar en EDAS
Tras la verificación local, despliegue la aplicación en EDAS sin modificar ningún código ni configuración. SchedulerX admite la migración transparente desde un entorno de desarrollo hacia EDAS.
Elija un destino de despliegue según su infraestructura:
|
Destino de despliegue |
Guía |
|
Clúster de Kubernetes |
|
|
Clúster de Elastic Compute Service (ECS) |
Después del despliegue, gestione y supervise sus trabajos programados desde la consola de EDAS.
Desplegar en regiones de producción
Los pasos anteriores utilizan la región test para desarrollo y verificación. Para desplegar en una región de producción como China (Hangzhou), agregue sus credenciales AccessKey al archivo application.properties:
spring.cloud.alicloud.access-key=<your-access-key-id>
spring.cloud.alicloud.secret-key=<your-access-key-secret>
Obtenga su AccessKey ID y AccessKey secret en la página de Gestión de seguridad.
Almacene las credenciales AccessKey de forma segura. Evite confirmarlas en sistemas de control de versiones. Utilice variables de entorno o un gestor de secretos en entornos de producción.
Siguientes pasos
Una vez desplegada la aplicación en EDAS, explore otras capacidades de SchedulerX:
Configure otros tipos de trabajo además de Simple Job Single-instance Edition.
Establezca modelos de ejecución distribuida como MapReduce para ejecutar cargas de trabajo en paralelo en varias instancias.