Ribbon:LB+RestTemplate
使用Eurake做服务注册中心时,客户端依赖就已经帮助我们将Ribbon所需要的依赖引入了进来
在使用springcloud ribbon客户端负载均衡的时候,可以给RestTemplate bean 加一个@LoadBalanced注解,就能让这个RestTemplate在请求时拥有客户端负载均衡的能力:
RestTemplate中常用方法:
getForObject与getForEntity的区别:
Ribben默认负载均衡策略为:轮询
负载均衡器Ribbon中的核心组件IRule负责选择什么样的负载均衡算法
注意:@ComponentScan 的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中,注解定义如下。比如在启动类上就有此注解。
步骤一:在客户端消费方下创建Ribbon负载均衡配置类(不要将配置类创建到启动类所在的包及子包下)
package com.atguigu.myrule;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MySelfRule {
@Bean
public IRule myRule() {
return new RandomRule(); //定义为随机
}
}
步骤二: 在启动类上添加@RibbonClient注解,告知系统消费方在访问提供方的时候要使用那种负载衡策略
package com.atguigu.springcloud;
//import com.atguigu.myrule.MySelfRule;
import com.atguigu.myrule.MySelfRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
//import org.springframework.cloud.netflix.ribbon.RibbonClient;
@EnableEurekaClient
@SpringBootApplication
@RibbonClient(name="CLOUD-PAYMENT-SERVICE",configuration = MySelfRule.class)
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class);
}
}