SpringCloud学习笔记(三)使用Ribbon进行服务间的调用

Ribbon介绍

Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。简单地说,Ribbon是一个客户端负载均衡器。

Ribbon工作时分为两步:第一步先选择 Eureka Server, 它优先选择在同一个Zone且负载较少的Server;第二步再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略,例如轮询、随机、根据响应时间加权等。

 

首先按照springcloud学习笔记二新建两个项目,然后对两个项目进行接口开发。

项目一:

@RestController
@RequestMapping("/api/v1")
public class TestController {
   @Value("${server.port}")
   private String port;

    /**
     *  
     * @param msg
     * @return
     */
  
    @RequestMapping("test")
    public String selectByProductId(String msg){
       //返回值中加上端口号,便于区分是从那个节点获取的数据(仅用于测试)
       return msg+" hello world "+port;
    }
}

项目二:

首先在项目二的启动类中添加一个配置

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

接着进行项目二的接口开发

@RestController
@RequestMapping("/hello")
public class HelloController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("world")
    public String getHelloWorld(String msg){

        String obj = restTemplate.getForObject("http://product-service/api/v1/test?msg="+msg, String.class);
        System.out.println(obj);
        return obj;
    }
}

由于只是做一个简单的测试写的比较简单没有分的很细,只是在项目里写了两个controller层的接口,你们可以根据你们的业务进行开发。

下面是进行测试,首先启动注册中心,接着启动项目一,我启动了两个节点如下 8771和8772

 

想在启动项目二端口号8781

 

注册中心,项目一,项目二都启动成功了

 

我这里时使用项目二调用项目一的接口,使用浏览器访问

项目二控制台打印数据

 

以上就是使用ribbon进行服务间的调用的简单demo,有帮助的帮点个赞吧!!!!!!!!!!!!!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值