springcloud学习笔记之负载均衡

springcloud学习笔记之负载均衡

一、ribbon

ribbon是一套客户端负载均衡的工具,为客户端软件提供负载均衡和服务调用。

负载均衡:将客户的请求分派到多个服务器上,从而达到系统的高可用。

Netflix-eureka已经集成了ribbon
在这里插入图片描述
1.ribbon与restTemplate组合实现负载均衡

配置restTemplate添加@LoadBalanced使用负载均衡

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

负载均衡调用服务

@RestController
public class OrderController {
    public static final  String PAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";

    @Autowired
    private   RestTemplate restTemplate;

    @PostMapping("/consumer/payment/create")
    public CommonResult<Payment> create(@RequestBody Payment payment){
        return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);
    }

    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
        return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
    }
}

2.restTemplate.getForObject()与restTemplate.getForEntity()区别

restTemplate.getForObject():返回对象为响应体中数据转化成的对象,可以理解为json

restTemplate.getForEntity():返回对象为ResponseEntity,包含响应头、响应体、状态码等信息

3.负载均衡策略
在这里插入图片描述
4.替换负载均衡策略

注意:不能放在@ComponentScan所能扫描到的包及子类在这里插入图片描述

定义为随即策略

@Configuration
public class MyRule {
    @Bean
    public IRule myRule(){
        return new RandomRule();
    }
}

主启动类添加@RibbonClient

@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MyRule.class)
public class OrderMain81 {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain81.class);
    }
}

表示访问CLOUD-PAYMENT-SERVICE服务时使用MyRule定义的负载均衡策略

5.负载均衡算法-轮询算法
rest接口的第几次请求数%服务器集权的总数量=时间调用的服务器下标

服务器集权的总数量=服务发现通过服务名称获取微服务实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值