Heim  >  Artikel  >  Java  >  Verteiltes Aufgabenplanungssystem basierend auf Spring Cloud

Verteiltes Aufgabenplanungssystem basierend auf Spring Cloud

WBOY
WBOYOriginal
2023-06-23 09:09:131357Durchsuche

Angesichts der Komplexität des Geschäfts sind viele Unternehmen mit einer großen Anzahl geplanter Aufgaben konfrontiert, die ausgeführt werden müssen, und die Verwaltung und Planung dieser Aufgaben stellt einen erheblichen Druck auf die Unternehmen dar. Das herkömmliche eigenständige Aufgabenplanungssystem kann die Anforderungen von Unternehmen nicht mehr erfüllen, und das verteilte Aufgabenplanungssystem ist zu einer notwendigen Wahl geworden. In diesem Artikel werden der Entwurf und die Implementierung eines verteilten Aufgabenplanungssystems auf Basis von Spring Cloud vorgestellt.

1. Systemarchitekturdesign

Spring Cloud bietet eine Reihe von Tools und Frameworks wie Eureka, Ribbon, Feign, Config, Hystrix usw. Diese Tools und Frameworks haben uns bei der Implementierung verteilter Aufgabenplanungssysteme sehr geholfen. . Das Folgende ist das Architekturdesigndiagramm des Systems:

Verteiltes Aufgabenplanungssystem basierend auf Spring Cloud

Das System ist in vier Teile unterteilt: Task-Management-Center, geplanter Task-Service, Task-Executor und Protokollcenter.

  1. Task Management Center: Das Task Management Center ist für die Verwaltung geplanter Aufgaben im gesamten System verantwortlich, bietet Vorgänge wie das Hinzufügen, Löschen, Ändern und Stoppen von Aufgaben sowie die Übertragung von Aufgabeninformationen an den Dienst für geplante Aufgaben.
  2. Geplanter Aufgabendienst: Der geplante Aufgabendienst ist die Kernkomponente des gesamten Systems. Er empfängt Aufgabeninformationen, die vom Aufgabenverwaltungszentrum übermittelt werden, und registriert die Aufgabeninformationen in Eureka. Gleichzeitig scannt es regelmäßig die Aufgabeninformationen im Registrierungszentrum und sendet basierend auf den Aufgabeninformationen Anweisungen zur Aufgabenausführung an den Aufgabenausführer.
  3. Task Executor: Der Task Executor ist die Hauptkomponente zum Ausführen von Aufgaben im System. Er ist für das Starten geplanter Aufgaben, das Ausführen von Aufgaben und das Aufzeichnen von Aufgabenausführungsprotokollen verantwortlich.
  4. Protokollcenter: Das Protokollcenter sammelt von Aufgabenausführern generierte Aufgabenausführungsprotokolle und bietet Protokollabfrage- und Protokollanalysefunktionen. 2. Systemimplementierung Im Aufgabenverwaltungscenter können wir geplante Aufgaben hinzufügen, löschen, ändern, deaktivieren und aktivieren. Auf der Seite zeigen wir die grundlegenden Informationen der geplanten Aufgabe und die Planungsregeln der Aufgabe an.

Implementierung des Dienstes für geplante Aufgaben

  1. Bei der Implementierung des Dienstes für geplante Aufgaben verwenden wir hauptsächlich SpringCloud-Komponenten wie Eureka, Ribbon, Feign und Config. Wir verwenden Eureka als Registrierungszentrum, der geplante Aufgabendienst greift über Ribbon auf den Aufgabenausführer zu, verwendet Feign zum Aufrufen zwischen Diensten und verwendet Config zum Implementieren der Konfigurationszentrumsfunktion.
Konkret fügen wir jede Aufgabe, die geplant werden muss, in eine Karte ein und registrieren sie in Eureka. Von Zeit zu Zeit greift der Dienst für geplante Aufgaben über den Ribbon-Lastausgleich auf den Aufgabenausführer zu und sendet Anweisungen zur Aufgabenausführung an den Aufgabenausführer. Wenn die Aufgabenausführung fehlschlägt, wird das Aufgabenausführungsprotokoll aufgezeichnet und an das Protokollzentrum gesendet.

    Implementierung des Task-Executors
Der Task-Executor verwendet Quartz, um die Planung geplanter Aufgaben zu implementieren, und verwendet Feign, um vom Dienst für geplante Aufgaben gesendete Anweisungen zur Aufgabenausführung zu akzeptieren. Während des Aufgabenausführungsprozesses speichern wir den Aufgabenausführungsstatus, das Ausführungsprotokoll und andere Informationen in der Datenbank für spätere Abfragen und Analysen.

Implementierung des Protokollcenters

  1. Das Protokollcenter wird mithilfe der ELK-Architektur implementiert, die drei Komponenten umfasst: Elasticsearch, Logstash und Kibana. Unter anderem wird Elasticsearch zum Speichern von Protokollen, Logstash zum Senden von Protokollen von Task-Ausführern an Elasticsearch und Kibana zum Anzeigen und Abfragen von Protokollinformationen verwendet.
3. Systemoptimierung

Im tatsächlichen Einsatz müssen wir das System auch optimieren, um die Stabilität und Verfügbarkeit des Systems sicherzustellen. Nachfolgend sind einige gängige Optimierungsmaßnahmen aufgeführt:
  1. Lastausgleich: Für Task-Executor-Dienste müssen wir den Lastausgleich verwenden, um Single Points of Failure zu vermeiden und die Systemverfügbarkeit sicherzustellen.

Automatische Aufgabenwiederherstellung: Wenn der Task-Executor-Dienst ungewöhnlich stoppt, müssen wir die Aufgabe automatisch über das Programm im System wiederherstellen, um einen Aufgabenverlust zu vermeiden.

Verteilte Sperre: Wenn eine Aufgabe ausgeführt wird, muss die Aufgabe mit einer verteilten Sperre verarbeitet werden, um eine wiederholte Ausführung derselben Aufgabe mehrmals zu vermeiden.

Asynchrone Ausführung: Für einige Aufgaben, die lange dauern, können wir die asynchrone Ausführung verwenden, um die Aufgaben in die Nachrichtenwarteschlange zu stellen und so die Ausführungseffizienz und Zuverlässigkeit der Aufgaben zu verbessern.

  1. IV. Zusammenfassung: Im Vergleich zum herkömmlichen eigenständigen Aufgabenplanungssystem bietet das auf Spring Cloud basierende verteilte Aufgabenplanungssystem gleichzeitig die Vorteile einer höheren Parallelität, einer besseren Skalierbarkeit und einer besseren Fehlertoleranz Es ist auch eine effektive Wahl für die Aufgabenplanung. In diesem Artikel werden der Architekturentwurf und der Implementierungsprozess eines auf Spring Cloud basierenden verteilten Aufgabenplanungssystems vorgestellt und einige Maßnahmen zur Systemoptimierung erörtert. Ich glaube, dass es für alle von Nutzen sein wird.

Das obige ist der detaillierte Inhalt vonVerteiltes Aufgabenplanungssystem basierend auf Spring Cloud. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn