Maison  >  Article  >  Java  >  SpringCloud Feign expliqué en détail

SpringCloud Feign expliqué en détail

WBOY
WBOYavant
2022-11-01 17:22:561660parcourir

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"

1. Qu'est-ce que Feign

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.

2. Que peut faire Feign

(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é.

3. Étapes pour utiliser Feign

1. Créez un nouveau module

2. Configurez Pom :

Inscrivez-vous avec eureka : false #Ne vous inscrivez pas avec eureka

service-url :

defaultZone : http://localhost:7001/eureka/
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ôleur
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) 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();
    }
}

2) Configurer le service

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);
    }
}

3) Remarque

Le nom du service doit être écrit correctement Le contenu de GetMapper doit être cohérent avec le fournisseur, sinon une erreur sera signalée (j'ai passé un après-midi à la chercher)

Ce qui suit est le contenu du fournisseur

4 Les résultats

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer