Maison >Java >javaDidacticiel >Comment utiliser Spring Cloud pour développer un système de planification de tâches sous une architecture de microservices

Comment utiliser Spring Cloud pour développer un système de planification de tâches sous une architecture de microservices

WBOY
WBOYoriginal
2023-06-22 17:54:541290parcourir

Avec le développement d'Internet, de plus en plus d'entreprises commencent à adopter une architecture de microservices pour créer des systèmes distribués afin d'améliorer la fiabilité, l'évolutivité et la maintenabilité des applications. Dans l'architecture des microservices, un système de planification de tâches est un composant très important. Il peut être utilisé pour exécuter régulièrement certaines tâches asynchrones, appeler d'autres interfaces de microservices, etc.

Spring Cloud est un framework de microservices open source qui fournit des outils et des frameworks très puissants, tels que Spring Cloud Netflix, Spring Cloud Config, Spring Cloud Stream, Spring Cloud Security, etc. Parmi eux, Spring Cloud Netflix est un framework de microservices très populaire. Il fournit certains composants et extensions de base, tels que l'enregistrement et la découverte de services, l'équilibrage de charge client, la gestion de la configuration, les disjoncteurs, les passerelles API, etc.

Dans cet article, nous présenterons comment utiliser Spring Cloud pour développer un système de planification de tâches, qui comprend principalement le contenu suivant :

  1. Analyse des exigences du système de planification de tâches
  2. Utiliser Spring Scheduler pour implémenter la planification de tâches
  3. Put le système de planification de tâches dans l'architecture de microservices Spring In Cloud

1. Analyse des exigences du système de planification de tâches

Sous l'architecture de microservices, un système de planification de tâches doit prendre en charge les fonctions suivantes :

  1. Il peut déclencher l'exécution d'une tâche à un moment ou un moment précis.
  2. Prend en charge le déclenchement de l'exécution d'une tâche à intervalles de temps fixes ou à intervalles de temps périodiques.
  3. Prend en charge les nouvelles tentatives après un échec d'exécution de la tâche.
  4. Prend en charge l'exécution asynchrone des tâches et n'affecte pas le fonctionnement du programme principal.
  5. Prend en charge l'ajout et la suppression dynamiques de tâches.

2. Utilisez Spring Scheduler pour implémenter la planification des tâches

Spring Scheduler est un module du framework Spring Il fournit un cadre de planification de tâches léger qui peut facilement implémenter des fonctions de planification de tâches.

  1. Ajouter une dépendance Spring Scheduler

Ajouter une dépendance Spring Scheduler dans la logique de tâche pom.

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <version>2.4.3</version>
 </dependency>
  1. Ajouter une configuration de planification de tâches

Ajoutez une classe de configuration de planification de tâches au projet Spring Boot pour configurer la stratégie de planification de tâches spécifique et les tâches exécutées.

@Component
public class JobTask implements Runnable {
 
     @Override
     public void run() {
         System.out.println("running job...");
     }
 }
  1. Testez la fonction de planification des tâches

Après avoir démarré l'application Spring Boot, vous pouvez afficher la sortie de la console et la tâche sera exécutée selon l'intervalle de temps et la périodicité spécifiés. Si vous souhaitez modifier la stratégie d'exécution des tâches, il vous suffit de modifier la classe de configuration.

    3. Placez le système de planification de tâches dans l'architecture de microservices Spring Cloud
Enregistrez le système de planification de tâches dans le centre d'enregistrement des services

Dans l'application du système de planification de tâches, utilisez des services tels que Eureka ou Consul de Spring Cloud pour S'inscrire Avec le composant de découverte, enregistrez le système de planification de tâches auprès du centre d'enregistrement des services.

@Configuration
@EnableScheduling
public class ScheduleConfig {
 
     @Autowired
     private JobTask jobTask;
 
     //在每分钟的3秒和6秒执行一次
     @Scheduled(cron = "3-6 * * * * ?")
     public void scheduleJob1() {
         jobTask.run();
     }
 
     //在间隔5秒后执行第一次,之后每隔10秒执行一次
     @Scheduled(initialDelay = 5000, fixedRate = 10000)
     public void scheduleJob2() {
         jobTask.run();
     }
 }
  1. Définissez des règles de routage dans la passerelle

Utilisez des passerelles API telles que Spring Cloud Gateway ou Zuul pour exposer le système de planification de tâches à d'autres microservices.

spring:
     application:
          name: task-scheduler
 
 eureka:
     instance:
          hostname: localhost
     client:
          service-url:
               defaultZone: http://localhost:8761/eureka/
  1. Appelez le système de planification de tâches dans les microservices

Dans d'autres microservices, utilisez des outils tels que Feign ou RestTemplate pour appeler l'API RESTful exposée par le système de planification de tâches pour exécuter des tâches asynchrones ou déclencher l'exécution de tâches.

spring:
     application:
          name: api-gateway
          
 server:
     port: 8080
 
 eureka:
     instance:
          hostname: localhost
     client:
          service-url:
               defaultZone: http://localhost:8761/eureka/
 
 gateway:
     routes:
          - id: task-scheduler
               uri: lb://task-scheduler
               predicates:
                    - Path=/schedule/**
    IV.Résumé
  1. Cet article explique comment utiliser Spring Cloud pour développer un système de planification de tâches sous une architecture de microservices, qui comprend principalement l'utilisation de Spring Scheduler pour implémenter la planification de tâches et le placement du système de planification de tâches dans l'architecture de microservices Spring Cloud. J'espère que cela sera utile aux développeurs qui adoptent une architecture de microservices, afin qu'ils puissent plus facilement créer des systèmes distribués hautement fiables et hautement évolutifs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn