Ribbon及Feign负载均衡

本文详细介绍了Spring Cloud中的Ribbon和Feign实现客户端负载均衡的原理和使用方法。Ribbon作为客户端负载均衡器,提供了多种负载均衡策略。Feign是声明式的服务调用客户端,简化了服务之间的调用,同时集成了Ribbon,支持负载均衡。文章还提到了自定义负载均衡策略以及Feign的参数绑定方式。
摘要由CSDN通过智能技术生成

负载均衡 Ribbon 和 Feign

1. Ribbon 内容介绍

1.1 Ribbon 简介

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。

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

1.2 客户端”负载均衡“和服务端“负载均衡”

我R们用一张图来描述一下这两者的区别

img

这篇文章里面不会去解释nginx,如果不知道是什么的话,可以先忽略, 先看看这张图,其中:

  1. 服务端的负载均衡是一个url先经过一个代理服务器(这里是nginx),然后通过这个代理服务器通过算法(轮询,随机,权重等等…)反向代理你的服务,来完成负载均衡

  2. 客户端的负载均衡则是一个请求在客户端的时候已经声明了要调用哪个服务,然后通过具体的负载均衡算法来完成负载均衡

1.3 Quick Start

首先,我们还是要引入依赖,但是,eureka已经把ribbon集成到他的依赖里面去了,所以这里不需要再引用ribbon的依赖,如图:

img

要使用ribbon,只需要一个注解:

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

在RestTemplate上面加入@LoadBalanced注解,这样子就已经有了负载均衡, 怎么来证明?

我们这里现在启动了eureka集群(3个eureka) 和Power集群(2个power) 和一个服务调用者(User)

img

但是我们的User仅仅只需要调用服务,不需要注册服务信息,所以需要改一下配置文件:

配置什么意思就不做过多解释了,上面讲eureka的时候有讲到过

server:
  port: 5000
eureka:
  client:
    registerWithEureka: false
    serviceUrl:
      defaultZone: http://localhost:3000/eureka/,http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka

然后启动起来的页面是这样子的

image-20201127134553405

我们能看见 微服务名:SERVER-POWER4 下面有2个微服务(power-4,power5),现在我们来通过微服务名调用这个服务

这是我们的user项目的调用代码 :

private static final String URL="http://SERVER-POWER4";
 
 @Autowired //在配置类中配置的“RestTemplate”Bean
 private RestTemplate restTemplate;
 
 @RequestMapping("/power.do")
 public Object power(){
   
   //从SERVER-POWER4调用power.do服务
   return restTemplate.getForObject(URL+"/power.do",Object.class)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值