Avec la découverte d'enregistrement du service Eureka, le disjoncteur de circuit Hystrix, l'équilibrage de chargement des appels de ruban et le centre de configuration de configuration de cloud Spring, il semble qu'un cadre de microservice soit terminé, le dernier mais non le moindre, une passerelle de service est indispensable.
Spring Cloud Zuul Routing fait partie intégrante de l'architecture de microservice, fournissant des services de bord tels que le routage dynamique, la surveillance, la résilience, la sécurité, etc. Zuul est un équilibreur de charge basé sur le routage JVM et le côté serveur produit par Netflix.
Introduction à Zuul
Zuul joue le rôle de la "passerelle intelligente" dans le cadre des microservices de Spring Cloud. D'une part, Zuul est une passerelle d'accès, qui joue le rôle d'un proxy inversé, et est la seule entrée pour que les consommateurs externes demandent des services internes. D'un autre côté, Zuul a également des fonctions de filtrage. En injectant les règles de filtre à l'exécution, il peut réaliser l'authentification des utilisateurs, le routage dynamique, la version de gris, les tests A / B, la limitation de courant de charge et d'autres fonctions.
La plupart des fonctions de Zuul sont remplies par le biais de fonctions de filtrage. Zuul peut fournir quatre types de filtrage standard, comme le montre la figure ci-dessous:
1) PRE: Les règles de filtrage fonctionnent avant le routage. Vous pouvez utiliser le filtre "PRE" pour réaliser l'authentification des utilisateurs, les journaux de demande d'enregistrement, etc.;
2) Route: les règles de filtrage entrent en vigueur lors du routage. Le routage dynamique, la libération de niveaux de gris, les tests A / B, la limitation de courant de charge, etc. peuvent être utilisés pour obtenir un routage dynamique, une libération de niveaux de gris, etc.
3) Post: La règle de filtrage prend effet après le routage. Le filtre "Post" peut être utilisé pour collecter des statistiques et des mesures, écrire les microservices correspondants à la réponse HTTP et le renvoyer au consommateur de service;
4) Erreur: cela se produira lorsqu'une erreur se produit pendant le processus de routage de la règle de filtrage. Vous pouvez utiliser le filtre d'erreur pour enregistrer le journal d'erreur et effectuer un traitement secondaire de l'erreur, etc.
Passez des messages entre les filtres avec RequestContext. Le contenu stocké dans RequestContext comprend une adresse cible de routage, des informations d'erreur, des informations de demande, des informations de réponse, etc. Les règles de filtrage de Zuul peuvent également être écrites dans une langue basée sur JVM, y compris Java, Python, Groovy, etc.
1. Exemple de Zuul
Sur la base de la démo précédente, nous démontrerons le service Zuul Gateway
1. Créez une classe de passerelle
@Enablezuulproxy @springCloudApplication // intégrer @springbootapplication, @enablediscoveryClient, @enableCircuitBreaker classe publique ZuulApplication {public static void main (String [] args) {new SpringApplicationBuilder (zuulapplication.class) .web (true) .run (args); }}2. Ajouter un fichier de configuration des propriétés
Spring.Application.name = API-Gateway Server.port = 5555 Zuul.Routes.api-a.path = / API-A / ** ZUUL.ROUTES.API-A.SERVICEID = COMPUTE-SERVIC eureka.client.serviceUrl.defaultZone = http: // localhost: 1111 / eureka /
Portez également l'adresse du centre d'enregistrement des services Eureka, API-A.ServiceId, B-ServiceId pointer le nom du fournisseur de services
3. Effet d'accès
À l'origine, l'instance de service de service de calcul était directement accessible via le lien http: // calcul-service / add? A = 10 & b = 20 lien. Maintenant, vous pouvez accéder directement au service de service de calcul par localhost: 5555 / api-a / add? A = 1 & b = 2 adresse de passerelle. De même, la passerelle Zuul offre également une fonction d'équilibrage de charge de service, envoyant toutes les demandes à l'instance de service de service.
2. Qu'est-ce qu'une passerelle? Pourquoi avez-vous besoin d'utiliser une passerelle?
Grâce à la figure ci-dessus, l'interface API est directement exposée à l'appelant de service sans passerelle. Lorsque le nombre d'appels augmente, différents appelants d'entreprise sont différents et les droits d'accès personnalisés, la vérification et d'autres logiques sont forcément ajoutés. Après avoir ajouté la passerelle API, un mur est créé entre l'appelant tiers et le fournisseur de services. Ce mur communique directement avec l'appelant pour le contrôle d'autorisation, puis la demande est équilibrée au serveur backend. Tout comme il n'est pas nécessaire d'accéder directement à la méthode ADD du service de calcul, la demande est transmise à l'instance de service via le lien API-A / ADD. Zuul est une passerelle API qui fournit un équilibrage de charge, un proxy inversé et une authentification de l'autorisation.
Semblable à Nginx ajoutant un mur de protection à l'extrémité avant du service d'application, l'équilibrage de charge de Zuul est destiné à distribuer des demandes à un service ou une instance de service dans le cluster. Le ruban introduit précédemment se concentre également sur les fonctions de chargement de service, qui s'adresse aux consommateurs de services distribuant des demandes d'appel à une instance de prestation de services spécifique. Les deux sont l'équilibrage de la charge, qui est en fait réalisé à différents niveaux du système.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.