Feign은 Netflix에서 개발한 선언적 REST 호출 클라이언트입니다. 리본 로드 밸런싱과 Hystrⅸ 서비스 회로 차단기는 Spring Cloud의 마이크로서비스 개발을 위한 매우 기본적인 구성 요소입니다. 모두에게 도움이 되기를 바랍니다.
추천 학습: "java 비디오 튜토리얼"
Feign은 서비스를 호출하는 컨트롤러와 유사하게 마이크로서비스 간 호출을 더 쉽게 만드는 선언적 웹 서비스 클라이언트입니다. SpringCloud는 Ribbon과 Eureka를 통합하고 Feigin을 사용하여 부하 분산된 http 클라이언트를 제공할 수 있습니다. Feign은 인터페이스와 주석을 통해 로드 밸런싱을 구현합니다.
(Crazy God Talks JAVA에서 발췌)
Feign은 무엇을 할 수 있나요?
Feign은 Java Http 클라이언트 작성을 더 쉽게 만드는 것을 목표로 합니다.
이전에 Ribbon + RestTemplate을 사용할 때 RestTemplate은 Http 요청을 캡슐화하고 템플릿 호출 방법 집합을 형성하는 데 사용되었습니다. 그러나 실제 개발에서는 서비스 종속성이 여러 위치에서 호출될 수 있고 인터페이스가 여러 위치에서 호출되는 경우가 많기 때문에 일반적으로 각 마이크로서비스에 대해 클라이언트 클래스를 캡슐화하여 이러한 종속 서비스 호출을 패키징합니다. 따라서 Feign은 이를 기반으로 추가 캡슐화를 수행했으며 종속 서비스 인터페이스의 정의와 구현을 도와줄 것입니다. Feign의 구현에서는 인터페이스를 생성하고 주석을 사용하여 구성하기만 하면 됩니다(이전 The Mapper 주석과 유사). Dao 인터페이스에 표시되어 있으며 이제는 마이크로 서비스 인터페이스의 Feign 주석입니다. 이를 통해 서비스 제공자에 대한 인터페이스 바인딩을 완료할 수 있으며 Spring Cloud Ribbon을 사용할 때 서비스 호출 클라이언트를 자동으로 캡슐화하는 개발 노력이 단순화됩니다.
Feign은 기본적으로 리본을 통합합니다
리본을 사용하여 MicroServiceCloud-Dept의 서비스 목록 정보를 유지하고 폴링을 통해 클라이언트 로드 밸런싱을 수행합니다. 리본과 달리 Feign은 서비스 바인딩 인터페이스를 정의하고 사용하기만 하면 됩니다. 선언적 방법으로 서비스 호출을 구현합니다. 우아하고 심플하게.
eureka:활성화: true
4. configBean 구성
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>springcloud-demo2</artifactId> <groupId>com.you</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>springcloud-eureka-7001</artifactId> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server --> <!--Eureka Server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies> </project>로그인 후 복사
5. 시작 클래스 구성package com.you.config; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class ConfigBean { @Bean @LoadBalanced //ribbon /*配置负载均衡实现RestTemplate*/ /*IRule*/ /*RoundRobinRule 轮询 */ /*RandomRule 随机*/ /*AvailabilityFilteringRule 优先过滤掉跳闸、访问故障的服务,对剩下的进行轮询 */ public RestTemplate getRestTemplate() { return new RestTemplate(); } }로그인 후 복사로그인 후 복사
6.
1) Feign 의존성 소개
package com.you.config; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class ConfigBean { @Bean @LoadBalanced //ribbon /*配置负载均衡实现RestTemplate*/ /*IRule*/ /*RoundRobinRule 轮询 */ /*RandomRule 随机*/ /*AvailabilityFilteringRule 优先过滤掉跳闸、访问故障的服务,对剩下的进行轮询 */ public RestTemplate getRestTemplate() { return new RestTemplate(); } }
package com.you; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.ribbon.RibbonClient; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @EnableEurekaClient @EnableFeignClients(basePackages = { "com.you"}) public class FeignDeptConsumer_80 { public static void main(String[] args) { SpringApplication.run(FeignDeptConsumer_80.class,args); } }
서비스 이름은 GetMapper의 콘텐츠와 일치해야 합니다. 그렇지 않으면 오류가 발생합니다(오후에 찾느라 시간을 보냈습니다)
이런 방식으로 얻을 수 있습니다. 데이터 및 기본 알고리즘 로드 밸런싱이 아직 폴링 중입니다!
추천 학습: "
java 비디오 튜토리얼"
위 내용은 SpringCloud Feign에 대해 자세히 설명했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!