Ribbon与OpenFeign

Ribbon负载均衡服务调用

是什么?

简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。

LB负载均衡(Load Balance)是什么?

简单的说就是将用户的请求分摊地分配到多个服务上,从而达到系统的HA(高可用)。
常见的负载均衡软件有 Nginx、LVS,硬件F5等

Ribbon与Nginx的区别?

Nginx是服务器负载均衡(医院大门,对应负载多个科室),客户端所有的负载均衡都会交给Nginx,然后由Nginx实现转发请求。

Ribbon本地负载均衡(口腔科门,对应负载口腔科多个医生)在调用微服务接口时,会在服务注册中心上获取注册信息列表之后缓存到JVM本地,从而在本地实现远程服务接口调用技术。

当我们用Eureka作为服务注册中心时,明明我们未添加Ribbon依赖,为什么可以达到负载均的效果?

让我们来看一下,Eureka的Maven依赖结构图:
在这里插入图片描述
其实Eureka内部已近引入了Ribbon依赖


OpenFeign服务接口调用(用在服务消费者上)

Feign能干什么?

Feign旨在使编写Java Http客户端变得更容易。
前面使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模板化的调用方法。但实际开发中,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用

Feign集成了Ribbon

利用Ribbon维护了服务列表信息,并通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过feign只需要定义服务绑定接口且以声明的方法,优雅而简单的实现了服务调用。

Feign与OpenFeign的区别

在这里插入图片描述

接下来这里Feign不再具体讲解,直接上OpenFeign

引入pom依赖

<!--openFeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

写配置

server:
  port: 800
eureka:
  client:
    register-with-eureka: false       # false表示不向注册中心注册自己
    service-url:
      defaultZone: http://localhost:7001/eureka

主方法

在这里插入图片描述

编写对应服务提供者接口

在这里插入图片描述

编写controller

在这里插入图片描述

结构总图

在这里插入图片描述

OpenFeign超时控制

OpenFeign默认等待1秒,超过后报错

可以在消费者这边的配置文件中配置客户端超时控制:
在这里插入图片描述

OpenFeign日志打印功能

Feign提供了日志打印功能。可以对Feign接口的调用情况进行监控和输出。

日志级别:

  • NONE: 默认的,不显示任何日志;

  • BASIC: 仅记录请求方法、URL、响应状态码及执行时间;

  • HEADERS: 除了BASIC中定义的信息之外,还有请求和响应的头信息;

  • FULL: 除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。

开启步骤:
1) 配置日志bean ,在客户端新建配置类,代码如下:

@Configuration
public class FeignConfig {

    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}

2)配置文件中配置:

logging:
  level:
    # feign日志以什么级别监控哪个接口
    com.coderzpw.springcloud.service.PaymentFeignService: debug

3) 观察后台日志:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

coderzpw

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

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

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

打赏作者

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

抵扣说明:

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

余额充值