2.Feigh-微服务远程调用

打印 上一主题 下一主题

主题 948|帖子 948|积分 2854

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 的依赖。(注意替换为适合项目的版本号):
  1. <dependency>  
  2.     <groupId>org.springframework.cloud</groupId>  
  3.     <artifactId>spring-cloud-starter-openfeign</artifactId>  
  4.     <version>你的版本号</version>  
  5. </dependency>
复制代码
3.2. 启用 Feign 客户端

在 Spring Boot 应用主类或配置类上添加 @EnableFeignClients 注解来启用 Feign 客户端。
  1. @SpringBootApplication  
  2. @EnableFeignClients  
  3. public class YourApplication {  
  4.     public static void main(String[] args) {  
  5.         SpringApplication.run(YourApplication.class, args);  
  6.     }  
  7. }
复制代码
3.3. 创建 Feign 客户端接口

界说一个接口,并使用 Feign 的注解(如 @FeignClient)来指定要调用的服务。在这个接口中,你可以界说你必要调用的方法,并使用 Feign 的注解(如 @GetMapping、@PostMapping 等)来映射 HTTP 请求。
  1. @FeignClient(name = "service-name", url = "http://localhost:8080") // 如果使用服务发现,则不需要指定 url  
  2. public interface YourServiceClient {  
  3.   
  4.     @GetMapping("/some/path")  
  5.     YourResponseDTO getSomething();  
  6.   
  7.     @PostMapping("/another/path")  
  8.     YourResponseDTO postSomething(@RequestBody YourRequestDTO request);  
  9. }
复制代码
注意:如果你的微服务架构中使用了服务注册与发现(如 Eureka),则通常不必要在 @FeignClient 注解中指定 url 属性,因为 Feign 会主动通过服务名来剖析服务的地点。
3.4. 注入并使用 Feign 客户端

在服务类中,可以通过 Spring 的依赖注入来注入上面界说的 Feign 客户端接口,并像调用本地方法一样调用它的方法。
  1. @Service  
  2. public class YourService {  
  3.   
  4.     @Autowired  
  5.     private YourServiceClient yourServiceClient;  
  6.   
  7.     public void doSomething() {  
  8.         YourResponseDTO response = yourServiceClient.getSomething();  
  9.         // 处理响应  
  10.     }  
  11. }
复制代码
3.5. 配置 Feign(可选)

你可以通过配置文件或 Java 配置类来自界说 Feign 的行为,如设置毗连超时时间、读取超时时间、日志级别等。
比方举行日志配置:


  • NONE, 没日志(默认)。
  • BASIC, 只记载请求方法和URL以及相应状态代码和执行时间。
  • HEADERS, 记载根本信息以及请求和相应头。
  • FULL, 记载请求和相应的header、正文和元数据。
  1. logging.level.project.user.UserClient: DEBUG
复制代码
  1. @Configuration
  2. public class FooConfiguration {
  3.     @Bean
  4.     Logger.Level feignLoggerLevel() {
  5.         return Logger.Level.FULL;
  6.     }
  7. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表