Ribbon负载均衡

负载均衡的目的是减少同一时间对同一个提供者的请求次数。在高并发高可用的情况下,很容易造成请求雪崩,直接把服务挂掉,为了防止这一情概况的发生,我们使用负载均衡来处理。

使用方式很简单,在Ribbon和Eureka集成后,创建多个用来接收请求的提供者,并注册到Eureka中,注意,这里注册的时候,一定要保证自定义的Spring.appication.name内容一致。注意是所有的提供者的名字都要使用。然后注册Eureka时添加

instance:
  instance-id: springcloud-provider-8001

进行区分 这样处理后在消费者添加进行均衡操作的注解。

@LoadBalance 添加到

@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
    return new RestTemplate();
}

RestTemplate用来获取提供者的暴露接口。不需要关心提供者的内部流程,直接调用接口就可以。

在配置类中配置完成后进行controller的操作

@RestController
public class ConsumerDeptController {
    @Autowired
    RestTemplate restTemplate;
//  负载均衡放到rest中 获取的东西应该是从eureka中 Eureka中不止是8001端口提供服务,还有8002,所以使用服务名字来获取接口内容,Eureka和Ribbon会自动帮你判定使用的是8001还是8002
//    private static final String REST_URL_PREFIX="http://localhost:8001";
    private static final String REST_URL_PREFIX="http://SPRINGCLOUD-PROVIDER";

    @RequestMapping("/consumer/dept/get/{id}")
    public Dept get(@PathVariable("id") Integer id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id,Dept.class);
    }

    @RequestMapping("/consumer/dept/get")
    public List<Dept> getAll(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get",List.class);
    }
    @RequestMapping("/consumer/dept/add")
    public Boolean addDept(Dept dept){
        return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add",dept,Boolean.class);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值