Heim > Java > javaLernprogramm > Hauptteil

Service-Governance und strombegrenzende Implementierungsmethode basierend auf Spring Boot

WBOY
Freigeben: 2023-06-23 11:16:36
Original
750 Leute haben es durchsucht

Mit der Entwicklung des Internets hat die verteilte Systemarchitektur immer mehr Aufmerksamkeit und Anwendung gefunden. In einer verteilten Architektur werden Anzahl und Komplexität der Dienste erheblich zunehmen. Um eine hohe Verfügbarkeit und Leistung des Systems sicherzustellen, sind Service-Governance und Strombegrenzung zu einem der Probleme geworden, die gelöst werden müssen. In diesem Artikel werden die Service-Governance und die Implementierungsmethode zur Strombegrenzung basierend auf Spring Boot vorgestellt.

1. Service Governance

Service Governance ist ein sehr wichtiger Teil der verteilten Architektur und in der Microservice-Architektur noch wichtiger. Spring Cloud bietet als auf Spring Boot basierendes Microservice-Framework eine Komplettlösung für die Service-Governance.

  1. Lastausgleich

Wenn ein Dienst von mehreren Clients aufgerufen wird, wie werden die Anforderungen auf mehrere Dienstinstanzen verteilt, um einen Lastausgleich zu erreichen? Spring Cloud bietet eine Ribbon-Lastausgleichskomponente, die eine Liste von Dienstinstanzen im Dienstregistrierungscenter abrufen und einen bestimmten Lastausgleichsalgorithmus verwenden kann, um Anforderungen an jede Dienstinstanz zu senden.

  1. Dienstregistrierung und -erkennung

In einem verteilten System müssen einige Dienste andere Dienste aufrufen, daher ist ein zentraler Dienstregistrierungs- und -erkennungsmechanismus erforderlich. Spring Cloud stellt Eureka-Komponenten bereit, mit denen automatisierte Dienstregistrierungs- und Erkennungsfunktionen realisiert werden können. Entwickler müssen lediglich die Eureka-Client-Abhängigkeit einführen, den Dienst auf dem Eureka-Server registrieren und ihn dann über den Dienstnamen erkennen und aufrufen.

  1. Kommunikation zwischen Diensten

In der Microservice-Architektur kann die Kommunikation zwischen Diensten mithilfe verschiedener Protokolle wie HTTP, TCP, AMQP usw. implementiert werden. Spring Cloud stellt die Feign-Komponente bereit, die die Kommunikation zwischen Diensten implementieren kann, indem Anmerkungen auf der Schnittstelle definiert werden. Die spezifische Implementierung lautet wie folgt:

Definieren Sie den Feign-Client:

@FeignClient(name = "user-service")
public interface UserService {
    @GetMapping("/user/{id}")
    User findUserById(@PathVariable("id") Long id);
}
Nach dem Login kopieren

Rufen Sie den Dienst auf:

@Autowired
private UserService userService;

public User getUserById(Long id) {
    return userService.findUserById(id);
}
Nach dem Login kopieren

Durch die obige Methode können Sie kann Feign-Implement-Aufrufe zwischen Diensten verwenden.

2. Strombegrenzung

In der Microservice-Architektur ist die Strombegrenzung eine sehr notwendige Maßnahme, die einen Systemzusammenbruch durch Dienstüberlastung verhindern kann. Spring Cloud bietet eine Vielzahl aktueller Begrenzungslösungen.

  1. Hystrix-Leistungsschalter

Hystrix ist ein fehlertolerantes Open-Source-Framework von Netflix, das Serviceverschlechterung, Fehlerisolierung, Leistungsschalter und andere Funktionen realisieren kann. In Spring Cloud kann eine Strombegrenzung durch die Verwendung von Hystrix-Komponenten erreicht werden.

Codebeispiel:

@RequestMapping("/getUser/{id}")
@HystrixCommand(fallbackMethod = "getUserFallback")
public User getUser(@PathVariable("id") Long id) {
    return userService.getUserById(id);
}

// fallback回调方法
private User getUserFallback(Long id) {
    return new User(id, "defaultUsername", "defaultPassword");
}
Nach dem Login kopieren

Durch Hinzufügen der Annotation @HystrixCommand zur angeforderten Methode und Angabe der Fallback-Rückrufmethode wird die Fallback-Methode aufgerufen, wenn der Dienstaufruf fehlschlägt oder eine Zeitüberschreitung auftritt, um den Standardwert zurückzugeben und so einen Zusammenbruch zu vermeiden der Dienst.

  1. Anmerkungen zur Strombegrenzung

Spring Cloud Gateway bietet eine Möglichkeit, die Strombegrenzung der Schnittstelle zu implementieren, indem Sie die Annotation @RequestRateLimiter zur Route hinzufügen. Die spezifische Implementierungsmethode lautet wie folgt:

Strombegrenzungsgerät definieren:

@Bean
RedisRateLimiter redisRateLimiter() {
    return new RedisRateLimiter(1, 1);
}
Nach dem Login kopieren

Strombegrenzungsanmerkung zur Route hinzufügen:

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
            .route(r -> r.path("/user/**")
                    .filters(f -> f.requestRateLimiter(c -> c.setRateLimiter(redisRateLimiter())))
                    .uri("lb://user-service"))
            .build();
}
Nach dem Login kopieren

Durch Hinzufügen der @RequestRateLimiter-Anmerkung zur Route können Sie den Stromfluss der Schnittstelle begrenzen und eine Dienstüberlastung vermeiden.

Zusammenfassend lässt sich sagen, dass Spring Cloud eine vollständige Service-Governance- und Strombegrenzungslösung bietet. Entwickler können geeignete Komponenten auswählen, um Service-Governance und Strombegrenzung entsprechend der tatsächlichen Situation zu implementieren.

Das obige ist der detaillierte Inhalt vonService-Governance und strombegrenzende Implementierungsmethode basierend auf Spring Boot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!