2.Feigh-微服务远程调用

1.服务调用关系

  • 服务提供者:暴露接口给其他微服务调用
  • 服务消费者:调用其他微服务提供的接口
  • 提供者与消费者角色是相对的
  • 一个服务可以同时是服务提供者和服务消费者

2.Feigh是什么

2.1.定义与特点

定义:Feign是一个声明式的伪Http客户端,它采用基于接口的注解方式,将HTTP请求模板化,通过简单的接口和注解定义HTTP请求。
特点
声明式:Feign通过定义接口和注解来声明需要调用的HTTP服务,让调用远程服务就像调用本地方法一样简单。
模板化:Feign将请求模板化,用户只需要传入参数即可发起请求,无需手动拼接URL和参数。
整合Ribbon:Feign默认集成了Ribbon,支持客户端负载均衡。
支持多种注解:Feign支持Feign注解和JAX-RS注解,同时也支持Spring MVC标准注解。
可插拔的编码器和解码器:Feign支持可插拔的HTTP编码器和解码器,可以根据需要进行定制。

2.2.主要功能

服务调用:Feign使得微服务之间的HTTP调用变得更加简单和方便,通过定义Feign客户端接口,可以像调用本地方法一样调用远程服务。
负载均衡:Feign与Ribbon结合使用,可以实现客户端负载均衡,提高系统的可用性和伸缩性。
服务发现:Feign可以与服务发现组件(如Eureka)结合使用,自动发现服务实例并进行调用。
熔断降级:Feign可以与Hystrix结合使用,实现熔断降级机制,提高系统的容错能力。

2.3.使用场景

Feign通常用于微服务架构中,作为服务消费者调用服务提供者的HTTP接口。在Spring Cloud等微服务框架中,Feign被广泛应用,简化了服务调用的开发工作。

3.Feigh实现微服务接口调用

3.1. 添加 Feign 依赖

首先,在 Spring Boot 项目中添加 Feign 的依赖。(注意替换为适合项目的版本号):

<dependency>  
    <groupId>org.springframework.cloud</groupId>  
    <artifactId>spring-cloud-starter-openfeign</artifactId>  
    <version>你的版本号</version>  
</dependency>

3.2. 启用 Feign 客户端

在 Spring Boot 应用主类或配置类上添加 @EnableFeignClients 注解来启用 Feign 客户端。

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

3.3. 创建 Feign 客户端接口

定义一个接口,并使用 Feign 的注解(如 @FeignClient)来指定要调用的服务。在这个接口中,你可以定义你需要调用的方法,并使用 Feign 的注解(如 @GetMapping、@PostMapping 等)来映射 HTTP 请求。

@FeignClient(name = "service-name", url = "http://localhost:8080") // 如果使用服务发现,则不需要指定 url  
public interface YourServiceClient {  
  
    @GetMapping("/some/path")  
    YourResponseDTO getSomething();  
  
    @PostMapping("/another/path")  
    YourResponseDTO postSomething(@RequestBody YourRequestDTO request);  
}

注意:如果你的微服务架构中使用了服务注册与发现(如 Eureka),则通常不需要在 @FeignClient 注解中指定 url 属性,因为 Feign 会自动通过服务名来解析服务的地址。

3.4. 注入并使用 Feign 客户端

在服务类中,可以通过 Spring 的依赖注入来注入上面定义的 Feign 客户端接口,并像调用本地方法一样调用它的方法。

@Service  
public class YourService {  
  
    @Autowired  
    private YourServiceClient yourServiceClient;  
  
    public void doSomething() {  
        YourResponseDTO response = yourServiceClient.getSomething();  
        // 处理响应  
    }  
}

3.5. 配置 Feign(可选)

你可以通过配置文件或 Java 配置类来自定义 Feign 的行为,如设置连接超时时间、读取超时时间、日志级别等。
例如进行日志配置:

  • NONE, 没日志(默认)。
  • BASIC, 只记录请求方法和URL以及响应状态代码和执行时间。
  • HEADERS, 记录基本信息以及请求和响应头。
  • FULL, 记录请求和响应的header、正文和元数据。
logging.level.project.user.UserClient: DEBUG
@Configuration
public class FooConfiguration {
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}
  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Listen·Rain

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

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

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

打赏作者

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

抵扣说明:

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

余额充值