Maison >Java >javaDidacticiel >Créer des applications distribuées basées sur Spring Cloud

Créer des applications distribuées basées sur Spring Cloud

PHPz
PHPzoriginal
2023-06-22 13:04:361437parcourir

Avec le développement rapide des applications Internet, l'architecture distribuée est devenue une tendance dominante dans le développement d'applications modernes. L'avantage des applications distribuées est qu'elles peuvent mieux gérer des problèmes tels qu'une concurrence élevée et de gros volumes de données, et améliorer la fiabilité, l'évolutivité et la flexibilité des applications. En tant que l'un des frameworks de microservices les plus populaires à l'heure actuelle, la flexibilité et la facilité d'utilisation de Spring Cloud incitent davantage de développeurs à choisir de créer des applications distribuées basées sur Spring Cloud. Cet article partagera des connaissances pertinentes sur la création d'applications distribuées basées sur Spring Cloud sur la base d'une expérience pratique.

1. Introduction à Spring Cloud

Spring Cloud est un cadre de développement d'architecture de microservices basé sur Spring Boot. Il fournit un ensemble complet d'outils de développement de systèmes distribués pour les applications Spring Boot, y compris la gestion de la configuration, la découverte de services, les disjoncteurs et les fonctionnalités intelligentes. routage, micro-agent, bus de contrôle et autres composants, ces composants aident les développeurs à créer rapidement des systèmes distribués. Spring Cloud est très populaire dans la communauté Spring et de plus en plus d'entreprises utilisent Spring Cloud pour créer leurs propres applications de microservices.

2. Architecture d'application distribuée

D'une application unique à une application distribuée, l'architecture a considérablement changé. Dans les applications distribuées, un grand système est divisé en plusieurs microservices. Chaque microservice possède ses propres fonctions indépendantes et sa propre logique métier. Les microservices communiquent via RPC, HTTP et d'autres protocoles, travaillant indépendamment et collaborant les uns avec les autres. Dans l'ensemble du système distribué, la prise en charge du centre d'enregistrement des services, du centre de configuration, de l'équilibrage de charge, de la passerelle et d'autres composants est souvent requise.

3. Composants de l'application Spring Cloud

1. Enregistrement et découverte du service

Spring Cloud Eureka est le composant d'enregistrement et de découverte du service dans Spring Cloud, tous les services doivent être enregistrés dans le serveur Eureka et dans Query. les adresses d'autres services via Eureka Client, réalisant ainsi la découverte automatique et l'équilibrage de charge des services. Dans les applications pratiques, nous introduisons souvent des dépendances Eureka Client dans chaque microservice pour réaliser l'enregistrement et la découverte des services.

2. Centre de configuration

Spring Cloud Config est le composant de gestion du centre de configuration de Spring Cloud. Sa fonction est de gérer de manière centralisée les fichiers de configuration et de placer tous les fichiers de configuration des microservices au même endroit pour la gestion, via HTTP ou le protocole git. Cela évite les erreurs causées par la modification manuelle des fichiers de configuration.

3. Équilibrage de charge

Spring Cloud Ribbon est un équilibreur de charge côté client basé sur HTTP et TCP. Il peut gérer la communication entre les services et distribuer les requêtes à différentes instances selon des règles spécifiées, améliorant ainsi les performances et la fiabilité du système. Dans les applications Spring Cloud, nous pouvons utiliser la stratégie d'équilibrage de charge par défaut de Ribbon ou personnaliser la stratégie d'équilibrage de charge selon les besoins.

4. Disjoncteur

Spring Cloud Hystrix est un composant de disjoncteur utilisé pour gérer les systèmes distribués. Il implémente principalement la capacité de protéger les systèmes distribués et d'empêcher les pannes infectieuses de provoquer l'effondrement du système. Lorsque le taux de défaillance du service demandé atteint un certain seuil, Hystrix coupe automatiquement le service et active rapidement une logique de secours pour réduire l'impact sur les autres services.

5. Gateway

Spring Cloud Gateway est le composant de passerelle API de Spring Cloud. Il peut acheminer et traiter uniformément toutes les demandes de microservices, améliorant ainsi la maintenabilité, la sécurité et l'évolutivité du système, mais il n'est lié à aucun. protocole ou implémentation spécifique, il peut donc être utilisé dans n'importe quel scénario où le traitement du routage API est requis.

4. Application pratique

1. Construire un centre d'enregistrement de services

Le centre d'enregistrement de services est le composant de base de toute l'architecture du microservice, nous devons donc d'abord construire un serveur Eureka comme centre d'enregistrement de services. Dans Spring Cloud, nous pouvons créer Eureka Server en ajoutant les dépendances suivantes.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

Ajoutez le contenu suivant dans le fichier de configuration pour démarrer Eureka Server.

server.port=8761
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

2. Créer un fournisseur de services

Le fournisseur de services est l'endroit où nous écrivons réellement la logique métier. Lors de l'implémentation du fournisseur de services, nous pouvons ajouter les dépendances suivantes pour implémenter la fonction d'enregistrement du service.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Dans le fichier de configuration, nous devons spécifier l'adresse du serveur Eureka.

eureka.client.service-url.default-zone=http://localhost:8761/eureka/

Après avoir écrit la logique métier, nous devons l'enregistrer sur le serveur Eureka au démarrage du service.

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
}

3. Créer un consommateur de service

Un consommateur de service est l'endroit où l'interface fournie par le fournisseur de services est appelée. Lors de l'implémentation du consommateur de service, nous pouvons ajouter les dépendances suivantes pour réaliser la fonction de découverte de service.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

    org.springframework.cloud
    spring-cloud-starter-netflix-ribbon

Dans le fichier de configuration, nous devons également préciser l'adresse du serveur Eureka.

eureka.client.service-url.default-zone=http://localhost:8761/eureka/

Après avoir écrit la logique métier, nous devons appeler l'interface fournie par le fournisseur de services via RestTemplate et d'autres méthodes.

@Service
public class ConsumerService {
    @Autowired
    private RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "fallback")
    public String helloService() {
        return restTemplate.getForObject("http://PROVIDER-SERVICE/hello", String.class);
    }

    public String fallback() {
        return "error";
    }
}

5. Résumé

Cet article présente les connaissances pertinentes sur la création d'applications distribuées basées sur Spring Cloud et partage le processus de candidature réel basé sur la pratique. Spring Cloud fournit un ensemble complet de solutions d'architecture distribuée, ce qui nous offre une grande commodité pour développer des applications distribuées. Grâce à l'apprentissage et à la pratique, nous pouvons mieux maîtriser et appliquer Spring Cloud pour créer nos propres applications distribuées.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn