cinta de integración de springcloud

Tabla de contenido

1. Introducción de dependencias

dos, usa

1. A través de la clase de configuración

2. A través de la configuración de yml

3. Carga diferida

4. Use loabalancer en lugar de cinta

1. Modifique pom.xml, deshabilite la cinta e introduzca la dependencia del balanceador de carga

 2. Desactive la cinta integrada del equilibrador de carga en yml


1. Introducción de dependencias

Ribbon es una implementación del equilibrio de carga del cliente.

nacos ya tiene una cinta integrada, por lo que no es necesario introducir dependencias por separado.

dos, usa

1. A través de la clase de configuración

Cree una nueva clase de configuración y agregue anotaciones a la aplicación (vea el código comentado en la figura a continuación).

package com.wind.ribbon;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author dongguanghui
 * @date 2023/5/17 15:15
 */
@Configuration
public class RibbonRandomRuleConfig {

    // 方法名一定要是iRule
    @Bean
    public IRule iRule(){
        return new RandomRule();
    }
    
}

2. A través de la configuración de yml

Si usa su propia estrategia, escriba el nombre de la clase directamente.

Si utiliza una estrategia personalizada, debe implementar una estrategia personalizada.

 Ejemplo de código de política personalizado (debe heredar AbstractLoadBalancerRule).

package com.wind.ribbon.rule;

import com.alibaba.nacos.client.naming.utils.ThreadLocalRandom;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.AbstractLoadBalancerRule;
import com.netflix.loadbalancer.ILoadBalancer;
import com.netflix.loadbalancer.Server;

import java.util.List;


/**
 * 方式三 自定义负载均衡策略
 * @author dongguanghui
 * @date 2023/5/17 15:53
 */
public class CustomRule extends AbstractLoadBalancerRule {


    public void initWithNiwsConfig(IClientConfig iClientConfig) {

    }

    public Server choose(Object key) {
        // 获得当前请求的服务实例
        ILoadBalancer loadBalancer = this.getLoadBalancer();
        List<Server> reachableServers = loadBalancer.getReachableServers();

        int random = ThreadLocalRandom.current().nextInt(reachableServers.size());
        Server server = reachableServers.get(random);
        return server;
    }
}

3. Carga diferida

El valor predeterminado es la carga diferida y la interfaz se cargará por primera vez.

Se puede configurar la carga del hambre, es decir, el servicio se carga cuando se inicia, lo que puede evitar el problema del tiempo de carga que puede ocurrir cuando se realiza la primera llamada.

4. Use loabalancer en lugar de cinta

1. Modifique pom.xml, deshabilite la cinta e introduzca la dependencia del balanceador de carga

<?versión xml="1.0" codificación="UTF-8"?> 
<proyecto xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
        <artifactId>alibaba</artifactId> 
        <groupId>com.wind.springcloud</groupId> 
        <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>order-loadbalancer</artifactId> 

    <dependencies> 
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency> 
        <!-- nacos服务注册发现 --> 
        <dependency> 
            <groupId>com.alibaba.cloud</groupId> 
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
            <exclusiones > 
<!-- 去除ribbon--> 
                <exclusión> 
                    <groupId>org.springframework.cloud</groupId> 
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> 
                </exclusion> 
            </exclusions> 
        < /dependencia> 
        <!-- Agregar dependencia del equilibrador de carga --> 
        <dependency> 
            <groupId>org.springframework.cloud</groupId> 
            <artifactId>spring-cloud-starter-loadbalancer</artifactId> 
        </dependency> 
    </dependencies> 

</project>

 2. Desactive la cinta integrada del equilibrador de carga en yml

 

Supongo que te gusta

Origin blog.csdn.net/Spring_possible/article/details/130743760
Recomendado
Clasificación