SpringCloud微服务系列- 服务间通信之服务间调用

SpringCloud微服务系列- 服务间通信之服务间调用

  概述

  OpenFeign是一个基于Java的声明式HTTP客户端框架,用于简化HTTP调用。它提供了一种简单的方式来定义RESTful服务的客户端接口。通过注解和接口定义,开发人员可以轻松地编写代码来调用远程HTTP服务。OpenFeign还提供了负载均衡、服务发现和错误处理等特性,可用于与分布式系统集成。

  一、OpenFeign的基本介绍

  1. OpenFeign 是什么

  Spring Cloud OpenFeign用于Spring Boot应用程序的声明式REST客户端。

  2. OpenFeign能干嘛

  Feign旨在使编写Java Http客户端变得更容易。前面在使用RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模板化的调用方法。

  声明式远程服务调用:接口 + 注解,就可以快速完成服务调用

  减少代码量以及提高代码可读性

  3. OpenFeign和Feign两者区别

  Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码
器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters.

  1)Feign

  Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。

  2)OpenFeign (增强版)

  OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequesMapping等等。OpenFeign的@Feignclient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

  包的引入方式:

  Feign: spring-cloud-starter-feign

  OpenFeign: spring-cloud-starter-openfeign

  二、OpenFeign的使用案例

  cloud-consumer-openfeign-order80

<!-- 引入服务调用依赖OpenFeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

   三、OpenFeign日志增强

   开发调试阶段可开启OpenFeign日志增强

   OpenFeign虽然提供了日志增强功能,但是默认是不显示任何日志的,不过开发者在调试阶段可以自己配置日志的级别。OpenFeign的日志级别如下:

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

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

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

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

   四、OpenFeign超时机制

   超时机制也是保护服务的一种手段

   问题:

   1)服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
   2)在某个峰值时刻,大呈的请求都在同时请求服务消费者,会造成线程的大呈堆积,势必会造成雪崩。
   3)利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。

posted @ 2024-06-29 11:07  欢乐豆123  阅读(9)  评论(0编辑  收藏  举报