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;
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |