Maison >Java >javaDidacticiel >SpringCloud Feign expliqué en détail
Feign est un client d'appel REST déclaratif développé par Netflix ; l'équilibrage de charge du ruban et le disjoncteur de service Hystrⅸ sont des composants très fondamentaux pour le développement de microservices dans notre Spring Cloud. Examinons-les ensemble. J'espère que cela sera utile à tout le monde.
Apprentissage recommandé : "Tutoriel vidéo Java"
Feign est un client de service Web déclaratif, qui facilite les appels entre microservices, semblable à un contrôleur appelant un service. SpringCloud intègre Ribbon et Eureka et peut utiliser Feigin pour fournir un client http à charge équilibrée. Feign implémente l'équilibrage de charge via des interfaces et des annotations.
(Extrait de Crazy God Talks JAVA)
Que peut faire Feign ?
Feign vise à faciliter l'écriture de clients Java HTTP
Lors de l'utilisation antérieure de Ribbon + RestTemplate, RestTemplate a été utilisé pour encapsuler les requêtes HTTP et former un ensemble de méthodes d'appel basées sur un modèle. Cependant, dans le développement réel, étant donné que les dépendances de service peuvent être appelées à plusieurs endroits et qu'une interface est souvent appelée à plusieurs endroits, une classe client est généralement encapsulée pour chaque microservice afin de regrouper les appels de ces services dépendants. Par conséquent, Feign a réalisé une encapsulation supplémentaire sur cette base, et il nous aidera à définir et à implémenter la définition de l'interface de service dépendante. Dans l'implémentation de Feign, il nous suffit de créer une interface et de la configurer à l'aide d'annotations (similaires à l'annotation précédente de The Mapper). est marqué sur l'interface Dao, et maintenant il s'agit d'une annotation Feign sur une interface de microservice), qui peut compléter la liaison de l'interface au fournisseur de services, simplifiant ainsi l'effort de développement consistant à encapsuler automatiquement le client d'appel de service lors de l'utilisation de Spring Cloud Ribbon.
Feign intègre Ribbon par défaut
En utilisant Ribbon pour conserver les informations de la liste de services de MicroServiceCloud-Dept et réaliser l'équilibrage de la charge client via une interrogation, contrairement à Ribbon, Feign n'a besoin que de définir l'interface de liaison de service et d'utiliser la méthode déclarative implémente les appels de service avec élégance et simplicité.
ribbon:eureka:
activé: true
4. Configurez 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. Configurez la classe de contrôleurpackage 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) Introduire la dépendance 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); } }
Vous pouvez l'obtenir de cette manière Les données, et l'algorithme par défaut pour. l'équilibrage de charge est toujours en cours d'interrogation !
Apprentissage recommandé : "Tutoriel vidéo Java"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!