Maison > Java > javaDidacticiel > Gouvernance des services et méthode de mise en œuvre des limites actuelles basées sur Spring Boot

Gouvernance des services et méthode de mise en œuvre des limites actuelles basées sur Spring Boot

WBOY
Libérer: 2023-06-23 11:16:36
original
784 Les gens l'ont consulté

Avec le développement d'Internet, l'architecture des systèmes distribués a attiré de plus en plus d'attention et d'applications. Dans une architecture distribuée, le nombre et la complexité des services augmenteront considérablement. Afin de garantir une haute disponibilité et des performances élevées du système, la gouvernance des services et la limitation du courant sont devenues l'un des problèmes à résoudre. Cet article présentera la gouvernance des services et la méthode de mise en œuvre des limites actuelles basées sur Spring Boot.

1. Gouvernance des services

La gouvernance des services est une partie très importante de l'architecture distribuée, et elle est encore plus essentielle dans l'architecture des microservices. Spring Cloud, en tant que framework de microservices basé sur Spring Boot, fournit une solution complète pour la gouvernance des services.

  1. Équilibrage de charge

Lorsqu'un service est appelé par plusieurs clients, comment répartir les requêtes sur plusieurs instances de service pour obtenir un équilibrage de charge. Spring Cloud fournit un composant d'équilibrage de charge du ruban, qui peut obtenir une liste des instances de service dans le centre d'enregistrement des services et utiliser un algorithme d'équilibrage de charge spécifique pour envoyer des requêtes à chaque instance de service.

  1. Enregistrement et découverte des services

Dans un système distribué, certains services doivent appeler d'autres services, un mécanisme centralisé d'enregistrement et de découverte des services est donc nécessaire. Spring Cloud fournit le composant Eureka, qui peut réaliser des fonctions automatisées d'enregistrement et de découverte de services. Les développeurs n'ont qu'à introduire la dépendance du client Eureka, à enregistrer le service sur le serveur Eureka, puis à le découvrir et à l'appeler via le nom du service.

  1. Communication inter-services

Dans l'architecture des microservices, la communication entre les services peut être implémentée à l'aide de divers protocoles tels que HTTP, TCP, AMQP, etc. Spring Cloud fournit le composant Feign, qui peut implémenter la communication interservices en définissant des annotations sur l'interface. L'implémentation spécifique est la suivante :

Définir le client Feign :

@FeignClient(name = "user-service")
public interface UserService {
    @GetMapping("/user/{id}")
    User findUserById(@PathVariable("id") Long id);
}
Copier après la connexion

Appeler le service :

@Autowired
private UserService userService;

public User getUserById(Long id) {
    return userService.findUserById(id);
}
Copier après la connexion

Grâce à la méthode ci-dessus, vous peut utiliser Feign Implement appels entre services.

2. Limitation de courant

Dans l'architecture des microservices, la limitation de courant est une mesure très nécessaire, qui peut éviter l'effondrement du système causé par une surcharge du service. Spring Cloud fournit une variété de solutions de limitation actuelles.

  1. Hystrix Circuit Breaker

Hystrix est un framework open source tolérant aux pannes de Netflix, qui peut réaliser une dégradation de service, une isolation des pannes, un disjoncteur et d'autres fonctions. Dans Spring Cloud, la limitation du courant peut être obtenue en utilisant des composants Hystrix.

Exemple de code :

@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");
}
Copier après la connexion

En ajoutant l'annotation @HystrixCommand sur la méthode demandée et en spécifiant la méthode de rappel de secours, lorsque l'appel de service échoue ou expire, la méthode de secours sera appelée pour renvoyer la valeur par défaut, évitant ainsi l'effondrement de le service.

  1. Annotations de limitation actuelle

Spring Cloud Gateway fournit un moyen d'implémenter la limitation de courant via des annotations. Vous pouvez implémenter la limitation actuelle de l'interface en ajoutant l'annotation @RequestRateLimiter sur la route. La méthode d'implémentation spécifique est la suivante :

Définir le périphérique de limitation de courant :

@Bean
RedisRateLimiter redisRateLimiter() {
    return new RedisRateLimiter(1, 1);
}
Copier après la connexion

Ajouter une annotation de limitation de courant à l'itinéraire :

@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();
}
Copier après la connexion

En ajoutant l'annotation @RequestRateLimiter à l'itinéraire, vous pouvez limiter le flux actuel de l'interface et éviter la surcharge du service.

Pour résumer, Spring Cloud fournit une solution complète de gouvernance des services et de limitation de courant. Les développeurs peuvent choisir les composants appropriés pour mettre en œuvre la gouvernance des services et la limitation de courant en fonction de la situation réelle.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal