web-dev-qa-db-fra.com

Intégration de Zuul et Ribbon

J'ai du mal à comprendre le lien entre Zuul et Ribbon.

Je pense que j'ai bien compris Zuul. C'est un proxy inverse que je peux contacter pour accéder à l'une de mes plusieurs instances d'un service. Il choisira le bon serveur à l'aide d'un algorithme à tour de rôle ou quoi que vous le configuriez. C'est un équilibreur de charge traditionnel. Pour connaître les instances disponibles, il peut utiliser un registre comme Eureka.

Mais j'ai plus de mal avec Ribbon. Il est vendu comme équilibreur de charge côté client, mais qu'est-ce que cela signifie? Il n'a pas besoin d'un serveur externe? Le ruban est intégré au client de la même manière qu'un client Eureka? Si oui, comment ça marche? Ai-je besoin de Zuul lorsque j'utilise le ruban et vice-versa?

Sur certains articles, j'ai vu qu'en fait, Zuul utilise le ruban par défaut pour la partie d'équilibrage de charge et cela m'a rendu encore plus confus. Si cela est vrai, que signifie "côté client"? Que fait Zuul sauf le routage?

J'espère que vous pouvez m'aider.

19
Vanesbush

Le client et le serveur sont toujours relatifs. Zuul est un client pour vos instances de service et vos instances de service sont des serveurs pour Zuul.

Lorsque nous utilisons un équilibreur de charge traditionnel (équilibreur de charge côté serveur), l'appelant API (client) ne connaît qu'un seul point de terminaison qui est un équilibreur de charge et le client ne connaît pas la liste des serveurs. L'équilibreur de charge choisit un serveur dans la liste.

Lorsque nous utilisons un équilibreur de charge côté client comme Ribbon, l'appelant API (client) doit connaître la liste des serveurs et en choisir un dans la liste. C'est pourquoi nous l'appelons équilibreur de charge côté client.

Comme vous le savez, Ribbon est un module d'équilibrage de charge côté client et est intégré à de nombreux modules client http. Par exemple, Feign et RestTemplate à charge équilibrée prennent en charge le ruban. À savoir Feign et RestTemplate à charge équilibrée peuvent choisir un serveur dans la liste donnée ou la liste d'eureka lorsqu'il est utilisé avec un ruban.

Concernant Zuul, il existe un RibbonRoutingFilter qui achemine votre demande vers une instance de service réelle. RibbonRoutingFilter utilise Ribbon pour choisir un serveur dans la liste fournie dans votre configuration ou dans Eureka. Donc, si vous souhaitez utiliser Zuul comme proxy inverse à charge équilibrée, Zuul a besoin du ruban.

27
yongsung.yoon