Scènes
Dans Spring Cloud Gateway, une stratégie d'équilibrage de charge est ajoutée (la modification est la même). Dans la plupart des cas, elle est configurée avec "service.ribbon.NFLoadBalancerRuleClassName = IRule.class". Cette méthode ne concerne qu'un seul service, car notre les services sont relativement corrects.La configuration d'un seul service est trop lourde, je souhaite donc atteindre mon objectif en modifiant la configuration par défaut de Ribbon.
Programme
Retrouvez la documentation: https://docs.spring.io/spring-cloud-netflix/docs/2.2.5.RELEASE/reference/html/#spring-cloud-ribbon
Vous avez trouvé la balise @RibbonClients, qui est une modification de la configuration par défaut du ruban
La mise en œuvre est la suivante:
- Créez une nouvelle configuration par défaut, définissez la méthode ribbonRule pour définir la règle de chargement par défaut, vous pouvez également utiliser les méthodes ribbonPing, ribbonServerList, serverListFilter pour configurer d'autres paramètres par défaut, sans oublier ici, veuillez explorer par vous-même.
import com.lizz.gateway.loadbalancer.VersionRoundRobinRule; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.IRule; import org.springframework.beans.factory.annotation.Configurable; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @description: 调整ribbon默认配置 * 原始默认org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration * @author: lizz */ @Configuration(proxyBeanMethods = false) public class RibbonConfiguration { @Bean public IRule ribbonRule() { //自定义负载规则 return new VersionRoundRobinRule(); } }
- Utilisez @RibbonClients pour activer la configuration par défaut du ruban
import com.liubike.gateway.config.RibbonConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.ribbon.RibbonClients; /** * 程序启动类 * * @author: lizz */ @SpringBootApplication @RibbonClients(defaultConfiguration = RibbonConfiguration.class) public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }