Day52 微服务 负载均衡 ***

负载均衡Ribbon简介

  • (1)什么是负载均衡
    负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行
    本质:负载均衡是一个算法,可以通过该算法实现从地址列表中获取一个地址进行服务调用
  • (2)在Spring Cloud中提供了负载均衡器:Ribbon
    美[ˈrɪbən]
  • (3)Ribbon提供了轮询、随机两种负载均衡算法(默认是轮询)可以实现从地址列表中使用负载均衡算法获取地址进行服务调用。
  • 在这里插入图片描述

Ribbon负载均衡应用

  • (1)实际环境中,往往会开启很多个user-service 的集群。此时获取的服务列表中就会有多个,到底该访问哪一个呢?
  • (2)可以使用Ribbon负载均衡:在执行RestTemplate发送服务地址请求的时候,使用负载均衡拦截器拦截,根据服务名获取服务地址列表,使用Ribbon负载均衡算法从服务地址列表中选择一个服务地址,访问该地址获取服务数据。

Ribbon负载均衡应用

  • (1)我们配置启动两个user-service 实例,一个8001,一个8002
  • (2)实现步骤:
  1. 启动多个user-service实例(8001,8002);
  2. 修改RestTemplate实例化方法,添加负载均衡注解;
  3. 修改ConsumerController;
  4. 测试
  • (3)注意事项:
    服务名称中不能出现_,可以考虑去掉或者改成-
    在这里插入图片描述

application.properties


# service name
spring.application.name=demo01-provider-user
# server port
# load  balance
server.port=${port:8001}

@LoadBalanced

在cosumer的启动类中


    @Bean //1 产生多个provider实例 8001 8002
    @LoadBalanced //2设置当前方法的返回对象,使用负载均衡算法
    public RestTemplate getRt() {
        RestTemplate rt = new RestTemplate();
        return rt;
    }

CosumerController

 @RequestMapping(path = "/{id}", method = RequestMethod.GET)
    public Object get(@PathVariable long id) {
        //3:此处不能写死 provider的 ip,port ,只能写服务名。不能使用_,替换成-
        String url = "http://demo01-provider-user/users/11";//参1 地址
        String json = rt.getForObject(url, String.class);//参2:数据要转换成什么类型
        return json;
    }

测试

请求 8001 8002
http://localhost:8001/users/11
http://localhost:8002/users/11
请求 81
http://localhost:81/consumer/11
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翁老师的教学团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值