Spring Cloud学习笔记(三)-Ribbon介绍以及配置RestTemplate的负载均衡

说明:本文仅作为本人学习<<深入理解Spring Cloud与微服务构建>>一书的学习笔记,所有代码案例及文字描述均参考该书,不足之处,请留言指正,不胜感激.
一.Ribbon是什么?
  Ribbon是Netflix公司开源的一个负载均衡的组件,它将负载均衡逻辑封装在消费者的客户端,消费者因为维护了一份服务生产者的信息列表(将自己注册到Eureka Server后会获取所有向Eureka Server注册的服务信息),通过负载均衡策略将请求分摊给多个服务生产者,从而达到负载均衡的目的.
二.RestTemplate介绍
  在选用Spring Cloud作为框架的微服务项目中,服务与服务之间的调用通常使用两种方式,一种是Feign,一种是RestTemplate.RestTemplate是Spring Resources中一个访问第三方RESTful API接口的网络请求框架,是用来消费REST服务的.
三.使用RestTemplate和Ribbon来消费服务.
首先,我们启动eureka-server,端口为8761,然后启动两个producer-server,端口分别为8762,8763.在浏览器查看服务注册中心如图所示:
这里写图片描述
producer-server中我们提供了一个接口,并且可以通过返回的端口号来查看到底是调用的哪个服务:

@RestController
@RequestMapping("/producer")
public class ProducerController {
    @Value("${server.port}")
    private String port;
    @GetMapping
    public String hi(){
        return "hi,this is " + port;
    }
}

接着我们创建一个新的Module,取名customer-server,因为要将消费者服务注册到Eureka Server,所以要引入Eureka Client的起步依赖spring-cloud-starter-eureka,还有Ribbon的起步依赖spring-cloud-starter-ribbon,pom文件如下:
这里写图片描述
配置文件如下:

server:
  port: 8764
spring:
  application:
    name: customer-server
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

另外,还需要在启动类上加上@EnableEurekaClient(除了Eureka Server加的是@EnableEurekaServer,其他的所有要注册到Eureka Server的服务都需要加上@EnableEurekaClient),开启Eureka Client的功能:

@SpringBootApplication
@EnableEurekaClient
public class CustomerServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(CustomerServerApplication.class, args);
    }
}

最后提供一个接口,在接口内部调用producer-server的/producer,因为生产者服务是两个,端口分别为8762,8763,我们希望在使用RestTemplate调用时,能够结合Ribbon,进行负载均衡,代码如下:

@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced//开启restTemplate的负载均衡能力
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
@RestController
@RequestMapping("/customer")
public class CustomerController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping
    public String hi(){
        return restTemplate.getForObject("http://producer-server/producer", String.class);
    }

}

启动消费者服务,在浏览器上多次访问http://localhost:8764/customer,浏览器会轮流显示如下内容:
hi,this is 8762
hi,this is 8763
这时可以发现,负载均衡器会轮流去请求producer-server的两个实例中的”/producer”接口.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值