Introducción y aplicación de SpringCloud Series-2Ribbon
Equilibrio de carga: se basa en la estructura de red existente y proporciona una forma económica, eficaz y transparente de ampliar el ancho de banda de los dispositivos y servidores de la red, mejorar el rendimiento y mejorar las capacidades de procesamiento de datos de la red. flexibilidad y disponibilidad.
Para decirlo sin rodeos, el equilibrio de carga es en realidad el producto del nacimiento de la arquitectura de microservicios; en la arquitectura monolítica anterior, la página de inicio iniciaba una solicitud y luego el back-end recibía la solicitud y Procesado directamente en este momento, no hay carga equilibrada; pero a medida que la arquitectura monolítica evoluciona a la arquitectura de microservicio, cada servicio de back-end se puede implementar en varios servidores. ¿El servidor debe manejar la solicitud? ¿Qué servidor lo manejará? Por lo tanto, debe haber una opción, y este proceso es el equilibrio de carga, también hay múltiples opciones, como seleccionar una al azar o seleccionar una por una, que es el algoritmo de equilibrio de carga.
También puedes usar ejemplos para ayudarte a recordar, como el antiguo emperador que volteaba las cartas. Al principio, el emperador solo tenía una concubina, por lo que no existe tal cosa como entregar las cartas. Si das la vuelta a las cartas, sólo podrás tener una concubina con quien acostarte. Pero si hay demasiadas concubinas, debe haber una opción y no se puede permitir que todas las concubinas se reúnan al mismo tiempo.
Funciona así:
El servidor de redireccionamiento HTTP es un servidor de aplicaciones normal. Su única función es calcular la dirección del servidor real en función de la solicitud HTTP del usuario. la dirección del servidor en la respuesta de redireccionamiento HTTP devuelta al navegador del usuario. Después de recibir la respuesta, el navegador del usuario enviará una nueva solicitud al servidor real en función de la información devuelta. El servidor DNS resolverá la dirección IP 192.168.8.74, que es la dirección IP del servidor de redireccionamiento HTTP. El servidor de redireccionamiento calcula la dirección real del servidor como 192.168.8.77 según un determinado algoritmo de equilibrio de carga y la devuelve al navegador del usuario. Una vez que el navegador del usuario regresa, reenvía la solicitud a 192.168.8.77 y finalmente completa el acceso.
La ventaja de este esquema de equilibrio de carga es que es relativamente simple, pero la desventaja es que el navegador necesita solicitar al servidor dos veces para completar un acceso, lo que resulta en un rendimiento deficiente al mismo tiempo; la potencia de procesamiento del propio servidor de redirección puede convertirse en un cuello de botella y la escalabilidad de todo el clúster es limitada, por lo que este esquema de equilibrio de carga rara vez se utiliza en implementaciones reales.
DNS (Sistema de nombres de dominio) es un servicio de Internet. Es una base de datos distribuida que asigna nombres de dominio y direcciones IP entre sí, facilitando el acceso a Internet. Cuando las personas visitan un sitio web a través de un navegador, solo necesitan recordar el nombre de dominio del sitio web, en lugar de la dirección IP, que no es fácil de entender. Uno de los recursos más importantes del sistema DNS se llama registro de host, también conocido como registro A. Es un registro importante que se utiliza para la resolución de nombres y puede asignar un nombre de host específico a la dirección IP del host correspondiente. Si tiene un nombre de dominio, debe ir al servidor de un proveedor de resolución DNS específico para completar un registro A y luego de un período de tiempo, otros pueden acceder a su sitio web a través de su nombre de dominio.
Como se puede ver en la figura anterior, se deben configurar varios registros A en el servidor DNS, por ejemplo:
www.woshuaiqi.com IN A 192.168.8.75
; p>
www.woshuaiqi.com IN A 192.168.8.76;
www.woshuaiqi.com IN A 192.168.8.77
Por lo tanto, cada solicitud de resolución de nombre de dominio será carga equilibrada de acuerdo con el El algoritmo calcula diferentes direcciones IP y las devuelve, de modo que varios servidores configurados en el registro A puedan formar un clúster para lograr el equilibrio de carga.
En la figura anterior, el usuario solicita www.woshuaiqi.com, DNS calcula una dirección IP 192.168.8.77 basada en el registro A y el algoritmo de equilibrio de carga y la devuelve al navegador, y el navegador accede al servidor físico real basado en 192.168.8.77. en esta dirección IP. Todas estas operaciones son transparentes para los usuarios, quienes sólo pueden conocer el nombre de dominio www.woshuaiqi.com.
El equilibrio de carga de resolución de nombres de dominio DNS tiene las siguientes ventajas:
Al mismo tiempo, la resolución de nombres de dominio DNS también tiene las siguientes desventajas:
Proceso de solicitud:
Las solicitudes enviadas por los usuarios primero deben pasar por el servidor proxy inverso. El servidor devolverá los resultados directamente al usuario de acuerdo con la solicitud del usuario o entregará la solicitud al servidor para su procesamiento y luego regresará. al usuario.
Equilibrio de carga de proxy inverso
Ventajas:
Desventajas:
Implementación de código
Debido a que los servidores tienen diferentes diferentes configuraciones y por lo tanto su capacidad para manejar solicitudes. presión. Las encuestas ponderadas pueden resolver mejor este problema.
1. Idea
Según el tamaño del peso, la máquina tendrá la oportunidad de sondeo correspondiente.
Podemos crear una matriz de este tipo {s1, s2, s2, s3, s3, s3} en la memoria según el peso y luego seleccionar el servidor correspondiente según el sondeo.
2. Desventajas: la probabilidad de que una solicitud se distribuya a tres servidores no es lo suficientemente estable. Las primeras 3 solicitudes no llegarán al servidor 3.
Nginx implementa un algoritmo de sondeo ponderado suave que distribuye las solicitudes de manera fluida (uniforme) a varios nodos.
Implementación del código
Implementación del código
Idea: Aquí usamos la idea de un intervalo, es decir, seleccionamos el número aleatorio correspondiente a través de un número aleatorio. que es menor que el número aleatorio dentro del intervalo (servidor), cuanto mayor sea el intervalo, mayor será la probabilidad de ser seleccionado.
Conocido:
s1: s2: (1, 3] s3 (3, 6]
Implementación del código
Implementación del código
REST (Transferencia de estado representacional) representa la transición de estado y se basa en estándares y protocolos como HTTP, URI, XML y JSON. Admite un nuevo diseño de arquitectura liviano, multiplataforma y multilenguaje. Estilo arquitectónico (un concepto) para servicios web
El estilo arquitectónico que se ajusta a los principios REST anteriores se llama RESTful
Operaciones previas de Restful:
/ Netflix/ribbon).
Principales productos de Ribbon:
Introducción al módulo Ribbon:
Comparación con Nginx:
Diferencias de aplicación en escenarios:
1. Primero, cree dos servicios para el equilibrio de carga