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

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

Jun 23, 2023 am 09:09 AM
spring cloud 分布式 任务调度

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser Redis pour réaliser une synchronisation distribuée des données Comment utiliser Redis pour réaliser une synchronisation distribuée des données Nov 07, 2023 pm 03:55 PM

Comment utiliser Redis pour réaliser une synchronisation de données distribuées Avec le développement de la technologie Internet et des scénarios d'application de plus en plus complexes, le concept de systèmes distribués est de plus en plus largement adopté. Dans les systèmes distribués, la synchronisation des données est un problème important. En tant que base de données en mémoire hautes performances, Redis peut non seulement être utilisé pour stocker des données, mais peut également être utilisé pour réaliser une synchronisation distribuée des données. Pour la synchronisation distribuée des données, il existe généralement deux modes courants : le mode publication/abonnement (Publish/Subscribe) et la réplication maître-esclave (Master-slave).

Comment Redis implémente la gestion distribuée des sessions Comment Redis implémente la gestion distribuée des sessions Nov 07, 2023 am 11:10 AM

La façon dont Redis implémente la gestion de session distribuée nécessite des exemples de code spécifiques. La gestion de session distribuée est aujourd'hui l'un des sujets brûlants sur Internet. Face à une concurrence élevée et à de gros volumes de données, les méthodes traditionnelles de gestion de session deviennent progressivement inadéquates. En tant que base de données clé-valeur hautes performances, Redis fournit une solution de gestion de session distribuée. Cet article expliquera comment utiliser Redis pour implémenter la gestion de session distribuée et donnera des exemples de code spécifiques. 1. Introduction à Redis en tant que stockage de session distribué La méthode traditionnelle de gestion de session consiste à stocker les informations de session.

Partage d'expérience dans l'utilisation de MongoDB pour mettre en œuvre la planification et l'exécution de tâches distribuées Partage d'expérience dans l'utilisation de MongoDB pour mettre en œuvre la planification et l'exécution de tâches distribuées Nov 02, 2023 am 09:39 AM

MongoDB est une base de données NoSQL open source offrant des performances, une évolutivité et une flexibilité élevées. Dans les systèmes distribués, la planification et l'exécution des tâches sont un problème clé. En utilisant les caractéristiques de MongoDB, des solutions de planification et d'exécution des tâches distribuées peuvent être réalisées. 1. Analyse des exigences pour la planification distribuée des tâches Dans un système distribué, la planification des tâches est le processus d'attribution de tâches à différents nœuds pour exécution. Les exigences courantes en matière de planification des tâches incluent : 1. Distribution des demandes de tâches : envoyer les demandes de tâches aux nœuds d'exécution disponibles.

Comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées Comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées Nov 07, 2023 am 11:04 AM

Comment utiliser Swoole pour implémenter la planification distribuée des tâches planifiées Introduction : Dans le développement PHP traditionnel, nous utilisons souvent cron pour implémenter la planification des tâches planifiées, mais cron ne peut exécuter des tâches que sur un seul serveur et ne peut pas faire face aux scénarios de concurrence élevée. Swoole est un framework de concurrence asynchrone hautes performances basé sur PHP. Il fournit des capacités de communication réseau complètes et une prise en charge multi-processus, nous permettant de mettre en œuvre facilement une planification distribuée des tâches planifiées. Cet article explique comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées.

Partage d'expériences pratiques en matière de développement Java : création d'une fonction de collecte de journaux distribuée Partage d'expériences pratiques en matière de développement Java : création d'une fonction de collecte de journaux distribuée Nov 20, 2023 pm 01:17 PM

Partage d'expériences pratiques en matière de développement Java : création d'une fonction de collecte de journaux distribuée Introduction : Avec le développement rapide d'Internet et l'émergence de données à grande échelle, l'application de systèmes distribués devient de plus en plus répandue. Dans les systèmes distribués, la collecte et l’analyse des journaux constituent un élément très important. Cet article partagera l'expérience de la création d'une fonction de collecte de journaux distribuée dans le développement Java, dans l'espoir d'être utile aux lecteurs. 1. Introduction de base Dans un système distribué, chaque nœud génère une grande quantité d'informations de journal. Ces informations de journal sont utiles pour la surveillance des performances du système, le dépannage et l'analyse des données.

Utiliser Redis pour obtenir la cohérence du cache distribué Utiliser Redis pour obtenir la cohérence du cache distribué Nov 07, 2023 pm 12:05 PM

Utiliser Redis pour assurer la cohérence du cache distribué Dans les systèmes distribués modernes, le cache joue un rôle très important. Cela peut réduire considérablement la fréquence d’accès du système à la base de données et améliorer les performances et le débit du système. Dans un système distribué, afin de garantir la cohérence du cache, nous devons résoudre le problème de la synchronisation des données entre plusieurs nœuds. Dans cet article, nous présenterons comment utiliser Redis pour obtenir la cohérence du cache distribué et donnerons des exemples de code spécifiques. Redis est une base de données clé-valeur hautes performances qui prend en charge la persistance, la réplication et la collecte

Utiliser Redis pour implémenter la planification de tâches distribuées Utiliser Redis pour implémenter la planification de tâches distribuées Nov 07, 2023 am 08:15 AM

Utiliser Redis pour mettre en œuvre la planification distribuée des tâches Avec l'expansion de l'activité et le développement du système, de nombreuses entreprises doivent mettre en œuvre la planification distribuée des tâches pour garantir que les tâches peuvent être exécutées sur plusieurs nœuds en même temps, améliorant ainsi la stabilité et la disponibilité du système. système. En tant que produit de stockage de données en mémoire hautes performances, Redis présente les caractéristiques de distribution, de haute disponibilité et de hautes performances, et est très approprié pour la mise en œuvre de la planification distribuée des tâches. Cet article explique comment utiliser Redis pour implémenter la planification distribuée des tâches et fournit des exemples de code correspondants. 1. Base Redis

Comment utiliser le framework Hyperf pour la planification des tâches Comment utiliser le framework Hyperf pour la planification des tâches Oct 26, 2023 am 09:42 AM

Comment utiliser le framework Hyperf pour la planification des tâches. Dans le développement d'applications Web modernes, la planification des tâches est une fonction très importante. Elle peut nous aider à mettre en œuvre diverses tâches planifiées, tâches en file d'attente, etc., et à améliorer les performances et l'efficacité du système. Dans le domaine de PHP, le framework Hyperf est un framework de microservices hautes performances très populaire. Cet article présentera comment utiliser le framework Hyperf pour la planification des tâches et donnera des exemples de code spécifiques. 1. Le concept de base de la planification des tâches. La planification des tâches fait référence à la planification automatique des tâches selon certaines règles et exigences de temps.

See all articles