Maison  >  Article  >  Java  >  Système de planification de tâches distribué basé sur Spring Cloud

Système de planification de tâches distribué basé sur Spring Cloud

WBOY
WBOYoriginal
2023-06-23 09:09:131418parcourir

Avec la complexité des affaires, de nombreuses entreprises sont confrontées à un grand nombre de tâches planifiées qui doivent être exécutées, et la gestion et la planification de ces tâches ont exercé une pression considérable sur les entreprises. Le système de planification de tâches autonome traditionnel ne peut plus répondre aux besoins des entreprises, et le système de planification de tâches distribué est devenu un choix nécessaire. Cet article présentera la conception et la mise en œuvre d'un système de planification de tâches distribué basé sur Spring Cloud.

1. Conception de l'architecture système

Spring Cloud fournit une série d'outils et de frameworks, tels que Eureka, Ribbon, Feign, Config, Hystrix, etc., ces outils et frameworks implémentez-le pour nous. Le système de planification de tâches distribuées a été d'une grande aide. Voici le schéma de conception architecturale du système :

Système de planification de tâches distribué basé sur Spring Cloud

Le système est divisé en quatre parties : centre de gestion des tâches, service de tâches planifiées, exécuteur de tâches, et centre de journalisation.

  1. Centre de gestion des tâches : le centre de gestion des tâches est responsable de la gestion des tâches planifiées dans l'ensemble du système, en fournissant des opérations telles que l'ajout, la suppression, la modification et l'arrêt des tâches, et en poussant les informations sur les tâches vers le service de tâches planifiées.
  2. Service de tâches planifiées : le service de tâches planifiées est le composant central de l'ensemble du système. Il reçoit les informations sur les tâches transmises par le centre de gestion des tâches et enregistre les informations sur les tâches dans Eureka. Dans le même temps, il analyse régulièrement les informations sur les tâches dans le centre d'enregistrement et envoie des instructions d'exécution des tâches à l'exécuteur de la tâche sur la base des informations sur la tâche.
  3. Exécuteur de tâches : L'exécuteur de tâches est le composant principal du système d'exécution des tâches. Il est responsable du démarrage des tâches planifiées, de l'exécution des tâches et de l'enregistrement des journaux d'exécution des tâches.
  4. Centre de journalisation : Le centre de journalisation collecte les journaux d'exécution de tâches générés par les exécuteurs de tâches et fournit des fonctions de requête de journal et d'analyse de journal.

2. Implémentation du système

  1. Mise en place du centre de gestion des tâches

Le centre de gestion des tâches adopte SpringBoot Le framework est développé et Thymeleaf est utilisé pour le rendu des pages. Dans le centre de gestion des tâches, nous pouvons ajouter, supprimer, modifier, désactiver et activer des tâches planifiées. Sur la page, nous affichons les informations de base de la tâche planifiée et les règles de planification de la tâche.

  1. Implémentation du service de tâches planifiées

Dans la mise en œuvre du service de tâches planifiées, nous utilisons principalement SpringCloud tel que Eureka, Ribbon, Feign, Config , etc. composants. Nous utilisons Eureka comme centre d'enregistrement, le service de tâches planifiées accède à l'exécuteur de tâches via Ribbon, utilise Feign pour passer des appels entre les services et utilise Config pour implémenter la fonction du centre de configuration.

Plus précisément, nous mettons chaque tâche qui doit être planifiée dans une carte et l'enregistrons dans Eureka. De temps en temps, le service de tâches planifiées accède à l'exécuteur de tâches via l'équilibrage de charge du ruban et envoie des instructions d'exécution de tâches à l'exécuteur de tâches. Si l'exécution de la tâche échoue, le journal d'exécution de la tâche est enregistré et envoyé au centre de journalisation.

  1. Implémentation de l'exécuteur de tâches

L'exécuteur de tâches utilise Quartz pour implémenter les tâches planifiées et utilise Feign pour accepter les tâches envoyées par le service de tâches planifiées . Exécuter les instructions. Pendant le processus d'exécution de la tâche, nous stockons l'état d'exécution de la tâche, le journal d'exécution et d'autres informations dans la base de données pour des requêtes et des analyses ultérieures.

  1. Implémentation du centre de log

Le centre de log est implémenté à l'aide de l'architecture ELK, comprenant trois composants : Elasticsearch, Logstash et Kibana. Parmi eux, Elasticsearch est utilisé pour stocker les journaux, Logstash est utilisé pour envoyer les journaux des exécuteurs de tâches à Elasticsearch et Kibana est utilisé pour afficher et interroger les informations des journaux.

3. Optimisation du système

Lors de l'utilisation réelle, nous devons également optimiser le système pour assurer la stabilité et la disponibilité du système. Certaines mesures d'optimisation courantes sont répertoriées ci-dessous :

  1. Équilibrage de charge : pour les services d'exécution de tâches, nous devons utiliser l'équilibrage de charge pour éviter les points de défaillance uniques et garantir la disponibilité du système.
  2. Récupération automatique des tâches : lorsque le service d'exécution des tâches s'arrête anormalement, nous devons restaurer automatiquement la tâche sur le système via le programme pour éviter la perte de tâches.
  3. Verrouillage distribué : Lorsqu'une tâche est exécutée, il est nécessaire d'effectuer un traitement de verrouillage distribué sur la tâche pour éviter l'exécution répétée de la même tâche plusieurs fois.
  4. Exécution asynchrone : Pour certaines tâches qui prennent beaucoup de temps, nous pouvons utiliser l'exécution asynchrone pour mettre les tâches dans la file d'attente des messages afin d'améliorer l'efficacité d'exécution et la fiabilité des tâches.

4. Résumé

Comparé au système de planification de tâches autonome traditionnel, le système de planification de tâches distribué basé sur Spring Cloud a une concurrence plus élevée et plus encore. les avantages d'une bonne évolutivité et d'une meilleure tolérance aux pannes. C'est également un choix efficace pour les entreprises pour mettre en œuvre la planification des tâches. Cet article présente le processus de conception architecturale et de mise en œuvre d'un système de planification de tâches distribué basé sur Spring Cloud, et aborde également certaines mesures d'optimisation du système. Je pense que cela sera utile à tout le monde.

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