Cinta: estrategia de equilibrio de carga
Los balanceadores de carga generalmente se implementan de dos maneras: el balanceador de carga del lado del servidor y el balanceador de carga del lado del cliente. El protagonista de hoy, Ribbon, pertenece al último: el balanceador de carga del lado del cliente.
El problema con los balanceadores de carga del lado del servidor es que brindan más control del tráfico, pero no satisfacen las necesidades de los consumidores, que desean utilizar diferentes estrategias de balanceo de carga al mismo tiempo, y algunos escenarios de aplicación. Utilice diferentes estrategias de equilibrio de carga, por lo que el equilibrio de carga del cliente proporciona esta flexibilidad. Sin embargo, el equilibrio de carga del lado del cliente tiene sus inconvenientes y, si se configura incorrectamente, puede provocar puntos de acceso en el proveedor de servicios o ningún servicio. Cada una de las siete políticas de equilibrio de carga integradas de Ribbon tiene reglas específicas.
Ribbon es un marco básico muy importante en la pila de tecnología Spring Cloud. Proporciona funciones de equilibrio de carga para Spring Cloud. Por ejemplo, Fegin y OpenFegin se implementan en función de Ribbon, e incluso el equilibrio de carga en Nacos. También se utiliza el marco Ribbon.
El poder del marco Ribbon es que no solo tiene siete estrategias de equilibrio de carga integradas, sino que también admite estrategias de equilibrio de carga definidas por el usuario, por lo que su apertura y conveniencia son las principales razones de su popularidad.
La diferencia entre el equilibrio de carga del lado del servidor y el equilibrio de carga del lado del cliente es la siguiente:
El equilibrador de carga del lado del cliente se implementa localmente (cliente) a través de un registro (como Nacos) Lista de servicios disponibles y luego obtener la IP y el puerto específicos del servidor específico a través del equilibrador de carga del cliente (con la política de equilibrio de carga configurada). El marco HTTP solicita servicios y obtiene resultados. El proceso de implementación es el siguiente:
Tomando como ejemplo la configuración de equilibrio de carga de la cinta en Nacos, establezca la siguiente configuración en el archivo de configuración application.yml:
Dado que Ribbon ya está integrado en Nacos, no es necesario hacer referencia a las dependencias de Ribbon al implementar el desarrollo del proyecto. En el árbol de dependencia de Nacos, puede ver la dependencia de Ribbon de la siguiente manera:
Estrategia de sondeo: RoundRobinRule llama a instancias de servicio en un orden determinado. Por ejemplo, si un *** tiene 3 servicios, la primera vez llama al servicio 1, la segunda vez llama al servicio 2, la tercera vez llama al servicio 3, y así sucesivamente. Los ajustes de configuración de esta política son los siguientes:
WeightedResponseTimeRule: WeightedResponseTimeRule asigna un peso a cada proveedor de servicios en función del tiempo de respuesta, cuanto mayor sea el tiempo de respuesta, menor será el peso y menor será la posibilidad de serlo; seleccionado. El principio de implementación es utilizar una estrategia de sondeo al principio, iniciar un temporizador de vez en cuando para recopilar el tiempo de respuesta promedio de todos los proveedores de servicios y luego asignar un peso a cada proveedor de servicios. Cuanto mayor sea el peso, más probable. debe ser seleccionado cuanto mayor sea el sexo. Los ajustes de configuración para esta política son los siguientes:
RandomRule: RandomRule selecciona aleatoriamente una instancia de servicio de una lista de proveedores de servicios. Los ajustes de configuración para esta política son los siguientes:
Política de conexiones mínimas: BestAvailableRule (también conocida como política de concurrencia mínima) recorre la lista de proveedores de servicios y selecciona la instancia de servicio con la menor cantidad de conexiones. Si existe el mismo número mínimo de conexiones, se llama a la estrategia de sondeo para su selección. Los ajustes de configuración de esta política son los siguientes:
RetryRule: RetryRule, sigue la política de sondeo para obtener servicios. Si la instancia de servicio obtenida está vacía o ha fallado, continuará reintentando obtener servicios dentro de la. tiempo especificado. Si la instancia de servicio está vacía o ha fallado, continuará intentando obtener el servicio dentro del tiempo especificado. Si la instancia de servicio no se ha obtenido después del tiempo especificado, se devolverá un valor nulo.
Los ajustes de configuración para esta política son los siguientes:
AvailabilityFilteringRule: AvailabilityFilteringRule primero filtra las instancias de servicio en mal estado y luego selecciona las instancias de servicio con menos conexiones. Los ajustes de configuración para esta política son los siguientes:
ZoneAvoidanceRule: ZoneAvoidanceRule selecciona instancias de servicio según el rendimiento y la disponibilidad de la zona en la que se encuentra el servicio, similar a la política de sondeo en una zona sin zona. ambiente. Los ajustes de configuración para esta política son los siguientes:
Ribbon es un equilibrador de carga del lado del cliente que proporciona mayor flexibilidad que un equilibrador de carga del lado del servidor con una política de equilibrio de carga unificada. Ribbon tiene siete políticas de equilibrio de carga integradas: política de operación por turnos, política ponderada, política aleatoria, política de menos conexiones, política de reintento, política sensible a la disponibilidad y política sensible a la zona. Ribbon tiene siete políticas de equilibrio de carga integradas: política de operación por turnos, política ponderada, política aleatoria, política de número mínimo de conexiones, política de reintento, política sensible a la disponibilidad y política sensible a la zona.