02- Spring Cloud 集成 Ribbon

负载均衡 分为2种:

中间式负载均衡 比如 硬件(F5),软件(Nginx);
客户端负载均衡 ,比如 Ribbon

1. Ribbon是Netflix开源的一款客户端负载均衡的工具软件。
3. Ribbon负载策略Irule:
02- Spring Cloud 集成 Ribbon_第1张图片
02- Spring Cloud 集成 Ribbon_第2张图片

2. Ribbon

代码如下
第一步:
eureka-service 同 Spring cloud 集成 eurea 略

第二步
eureka-provider 同 Spring cloud 集成 eurea 略

第三步

  1. pom.xml (添加了 --spring Retry重试依赖包)
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

        
        
            org.springframework.boot
            spring-boot-starter-actuator
        

        
        
            org.springframework.retry
            spring-retry
        


    

    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Finchley.SR2
                pom
                import
            
        
    

2 在config包下创建BeanConfiguration类

@Configuration
public class BeanConfiguration {


    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
  1. 重新设置 ribbon 策略
    在config 包下创建一个RibbonIRule
@Configuration
public class RibbonIRule {


    @Bean
    public IRule ribbonRule(){

        //  设置随机的负载策略
        // return new RandomRule();

          //设置重试的负载策略
         return new RetryRule();

        //设置轮询的负载策略
         //return new RoundRobinRule();
    }
}
  1. 在启动类上添加新的注解
@RibbonClient(name = "eureka-provider",configuration = RibbonIRule.class)
@SpringBootApplication
@EnableEurekaClient
public class EurekaConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaConsumerApplication.class, args);
    }

}


  1. appliaction.yml
server:
  port: 9091

spring:
  application:
    name: eureka-consumer
eureka:
  client:
    service-url:
      defaultZone: http://tina:123456@localhost:8001/eureka/
    healthcheck:
      #开启健康检查
      enabled: true
  instance:
    #采用IP注册
    prefer-ip-address: true
    #定义实例ID的格式
    instance.id: ${spring.application.name}:${sping.cloud.client.ip.address}:${server.port}
    #自定义实例跳转链接
    status-page-url: http://tina:123456@localhost:9091/test1/
    #表示eureka client 发送心跳给server端的频率
    lease-renewal-interval-in-seconds: 5
    #表示eureka client 发送心跳给server端频率超过如下设置时间,service端则移除该实例
    lease-expiration-duration-in-seconds: 5
ribbon:
  eager-load:
    # 开启饥饿加载模式
    enabled: true
    # 指定需要饥饿加载的服务名
    clients:  http://tina:123456@localhost:8001/eureka/,http://tina:123456@localhost:8002/eureka/
  # 设置ribbon 最大连接数
  MaxTotalConnections: 500
  # 设置ribbon 每个host 最大的连接数
  MaxConnectionsPerHost: 500

  #对当前实例重试的次数
  maxAutoRetries: 3
  #切换实例的重试次数
  maxAutoRetriesNextServer: 3
  #对所有的操作请求都进行重试
  okToRetryOnAllOperations: true
  #Http响应码进行重试
  retryableStatusCodes: 500,404,502
### 针对单个服务的 Ribbon 配置
###eureka-provider:
 ### ribbon:
 ###   # 基于配置文件形式的 针对单个服务的 Ribbon指定负载均衡策略
 ###   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule





你可能感兴趣的:(02- Spring Cloud 集成 Ribbon)