Heim  >  Artikel  >  Java  >  So entwickeln Sie mit Spring Cloud ein Aufgabenplanungssystem unter einer Microservice-Architektur

So entwickeln Sie mit Spring Cloud ein Aufgabenplanungssystem unter einer Microservice-Architektur

WBOY
WBOYOriginal
2023-06-22 17:54:541226Durchsuche

Mit der Entwicklung des Internets beginnen immer mehr Unternehmen, Microservice-Architekturen einzuführen, um verteilte Systeme aufzubauen und so die Zuverlässigkeit, Skalierbarkeit und Wartbarkeit von Anwendungen zu verbessern. Unter der Microservice-Architektur ist ein Aufgabenplanungssystem eine sehr wichtige Komponente. Es kann verwendet werden, um einige asynchrone Aufgaben regelmäßig auszuführen, andere Microservice-Schnittstellen aufzurufen usw.

Spring Cloud ist ein Open-Source-Microservice-Framework, das einige sehr leistungsstarke Tools und Frameworks bereitstellt, wie z. B. Spring Cloud Netflix, Spring Cloud Config, Spring Cloud Stream, Spring Cloud Security usw. Unter diesen ist Spring Cloud Netflix ein sehr beliebtes Microservice-Framework. Es bietet einige Kernkomponenten und Erweiterungen, wie z. B. Dienstregistrierung und -erkennung, Client-Lastausgleich, Konfigurationsmanagement, Leistungsschalter, API-Gateways usw.

In diesem Artikel stellen wir vor, wie Sie mit Spring Cloud ein Aufgabenplanungssystem entwickeln, das hauptsächlich die folgenden Inhalte umfasst:

  1. Anforderungsanalyse des Aufgabenplanungssystems
  2. Verwenden Sie Spring Scheduler, um die Aufgabenplanung zu implementieren
  3. Put das Aufgabenplanungssystem in die Spring In Cloud-Microservice-Architektur

1. Anforderungsanalyse des Aufgabenplanungssystems

Unter der Microservice-Architektur muss ein Aufgabenplanungssystem die folgenden Funktionen unterstützen:

  1. Es kann die Ausführung einer Aufgabe auslösen ein bestimmter Zeitpunkt oder Augenblick.
  2. Unterstützt das Auslösen der Ausführung einer Aufgabe in festen Zeitintervallen oder periodischen Zeitintervallen.
  3. Wiederholung des Supports nach einem Fehler bei der Aufgabenausführung.
  4. Unterstützt die asynchrone Ausführung von Aufgaben und hat keinen Einfluss auf die Ausführung des Hauptprogramms.
  5. Unterstützt das dynamische Hinzufügen und Löschen von Aufgaben.

2. Verwenden Sie Spring Scheduler, um die Aufgabenplanung zu implementieren.

Spring Scheduler ist ein Modul des Spring-Frameworks. Es bietet ein leichtes Aufgabenplanungs-Framework, mit dem Aufgabenplanungsfunktionen einfach implementiert werden können.

  1. Spring Scheduler-Abhängigkeit hinzufügen

Spring Scheduler-Abhängigkeit in der POM-Aufgabenlogik hinzufügen.

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <version>2.4.3</version>
 </dependency>
  1. Aufgabenplanungskonfiguration hinzufügen

Fügen Sie dem Spring Boot-Projekt eine Aufgabenplanungskonfigurationsklasse hinzu, um die spezifische Aufgabenplanungsstrategie und die ausgeführten Aufgaben zu konfigurieren.

@Component
public class JobTask implements Runnable {
 
     @Override
     public void run() {
         System.out.println("running job...");
     }
 }
  1. Testen Sie die Aufgabenplanungsfunktion

Nachdem Sie die Spring Boot-Anwendung gestartet haben, können Sie die Konsolenausgabe anzeigen und die Aufgabe wird gemäß dem angegebenen Zeitintervall und der angegebenen Periodizität ausgeführt. Wenn Sie die Aufgabenausführungsstrategie ändern möchten, müssen Sie nur die Konfigurationsklasse ändern.

    3. Integrieren Sie das Aufgabenplanungssystem in die Spring Cloud-Microservice-Architektur.
Registrieren Sie das Aufgabenplanungssystem im Service-Registrierungscenter.

Verwenden Sie in der Anwendung des Aufgabenplanungssystems Dienste wie Eureka oder Consul von Spring Cloud Registrieren Mit der Erkennungskomponente registrieren Sie das Aufgabenplanungssystem beim Service-Registrierungscenter.

@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. Routing-Regeln im Gateway festlegen

Verwenden Sie API-Gateways wie Spring Cloud Gateway oder Zuul, um das Aufgabenplanungssystem anderen Microservices zugänglich zu machen.

spring:
     application:
          name: task-scheduler
 
 eureka:
     instance:
          hostname: localhost
     client:
          service-url:
               defaultZone: http://localhost:8761/eureka/
  1. Aufrufen des Aufgabenplanungssystems in Microservices

In anderen Microservices verwenden Sie Tools wie Feign oder RestTemplate, um die vom Aufgabenplanungssystem bereitgestellte RESTful-API aufzurufen, um asynchrone Aufgaben auszuführen oder die Ausführung von Aufgaben auszulösen.

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. Zusammenfassung
  1. In diesem Artikel wird erläutert, wie Sie mit Spring Cloud ein Aufgabenplanungssystem unter einer Microservice-Architektur entwickeln. Dazu gehört hauptsächlich die Verwendung von Spring Scheduler zur Implementierung der Aufgabenplanung und die Platzierung des Aufgabenplanungssystems in der Spring Cloud-Microservice-Architektur. Ich hoffe, dass es Entwicklern, die eine Microservice-Architektur einführen, hilfreich sein wird, damit sie einfacher hochzuverlässige und hoch skalierbare verteilte Systeme aufbauen können.

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie mit Spring Cloud ein Aufgabenplanungssystem unter einer Microservice-Architektur. 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