Maison Java javaDidacticiel Créer un système de vol de microservices Spring Cloud distribué et sécurisé

Créer un système de vol de microservices Spring Cloud distribué et sécurisé

Jun 22, 2023 am 08:06 AM
spring cloud 安全 分布式

Avec le développement du cloud computing et l'expansion continue des activités des entreprises, l'architecture des microservices est devenue une architecture système très populaire. Parmi eux, Spring Boot et Spring Cloud sont actuellement les frameworks de microservices les plus couramment utilisés. Spring Cloud fournit une multitude de composants pour prendre en charge le développement et la gestion de microservices, notamment l'enregistrement et la découverte de services, le routage, l'équilibrage de charge, la gestion de la configuration, les disjoncteurs, etc.

Dans cet article, nous allons construire un système volant de microservices Spring Cloud distribué et sécurisé comme exemple pour démontrer les fonctions puissantes de Spring Cloud.

  1. Inscription et découverte des services

Tout d'abord, nous devons nous inscrire et découvrir les services. Spring Cloud fournit Eureka pour nous aider à réaliser l'enregistrement et la découverte des services. Nous terminerons l'enregistrement et la découverte des services via Eureka Server.

Créer une application Eureka Server :

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
Copier après la connexion

Configurer dans application.properties :

server.port=8761

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
Copier après la connexion

Dans les applications de fournisseur de services et de consommateur de services, nous devons les enregistrer auprès d'Eureka Server.

Configuré dans l'application.properties du fournisseur de services :

spring.application.name=flight-service-provider
server.port=8080

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
Copier après la connexion

Configuré dans l'application.properties du consommateur de services :

spring.application.name=flight-service-consumer
server.port=8081

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
Copier après la connexion
  1. Communication inter-services

Le fournisseur de services crée une interface RESTful via Spring MVC :

@RestController
@RequestMapping("/flights")
public class FlightController {

    @GetMapping("/{flightId}")
    public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) {
        Flight flight = new Flight(flightId, "Shanghai", "Beijing", new Date());
        return new ResponseEntity<>(flight, HttpStatus.OK);
    }
}
Copier après la connexion

Le service Le consommateur appelle le service via Spring RestTemplate :

@Service
public class FlightService {

    @Autowired
    private RestTemplate restTemplate;

    @Value("${service.provider.url}")
    private String serviceProviderUrl;

    public Flight getFlight(Integer flightId) {
        return restTemplate.getForObject(serviceProviderUrl + "/flights/{flightId}", Flight.class, flightId);
    }
}
Copier après la connexion

Parmi eux, service.provider.url est configuré dans le fichier application.properties de l'application.

  1. Équilibrage de charge

Dans les applications réelles, les fournisseurs de services sont susceptibles d'être déployés sur plusieurs instances. À l'heure actuelle, nous devons effectuer un équilibrage de charge pour améliorer les performances et la disponibilité du système. Spring Cloud fournit un ruban pour prendre en charge l'équilibrage de charge.

Configurez dans le application.properties du consommateur de service :

service.provider.url=http://flight-service-provider/
spring.cloud.loadbalancer.ribbon.enabled=true
Copier après la connexion

Utilisez le RestTemplate à charge équilibrée dans FlightService :

@Service
public class FlightService {

    @Autowired
    @LoadBalanced
    private RestTemplate restTemplate;

    @Value("${service.provider.name}")
    private String serviceProviderName;

    public Flight getFlight(Integer flightId) {
        return restTemplate.getForObject("http://" + serviceProviderName + "/flights/{flightId}", Flight.class, flightId);
    }
}
Copier après la connexion

Parmi eux, service.provider.name est configuré dans le application.properties de l'application.

  1. Gestion de la configuration

Spring Cloud fournit Config pour gérer facilement la configuration des applications. Nous pouvons stocker la configuration de l'application dans un référentiel Git et la distribuer via Config Server.

Créer une application Config Server :

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}
Copier après la connexion

Configurer dans application.properties :

server.port=8888

spring.cloud.config.server.git.uri=https://github.com/xxx/xxx.git
spring.cloud.config.server.git.search-paths=config-repo
Copier après la connexion

Chez les fournisseurs de services et les consommateurs de services, nous pouvons obtenir la configuration de l'application via Config Server.

Configurer dans l'application du fournisseur de services.yml :

spring:
  application:
    name: flight-service-provider
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
Copier après la connexion

Configurer dans l'application du consommateur de services.yml :

spring:
  application:
    name: flight-service-consumer
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
Copier après la connexion
  1. Disjoncteur

Dans une architecture microservice, en raison des dépendances entre les services La relation est très complexe, et certains temps d'arrêt ou problèmes de service peuvent entraîner l'effondrement de l'ensemble du système. Pour faire face à cette situation, nous pouvons utiliser des disjoncteurs pour gérer la dégradation du service.

Spring Cloud fournit Hystrix pour prendre en charge la fonctionnalité de disjoncteur.

Configurez dans application.yml du consommateur de service :

spring:
  application:
    name: flight-service-consumer
  cloud:
    config:
      uri: http://localhost:8888
      label: master
      profile: dev
  loadbalancer:
    ribbon:
      enabled: true
  circuitbreaker:
    enabled: true
    resilience4j:
      enabled: false
      circuitBreaker:
        backend: flight-service-provider
        failureRateThreshold: 50
Copier après la connexion

Ajoutez l'annotation @HystrixCommand dans FlightController :

@RestController
@RequestMapping("/flights")
public class FlightController {

    @Autowired
    private FlightService flightService;

    @GetMapping("/{flightId}")
    @HystrixCommand(fallbackMethod = "defaultGetFlight")
    public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) {
        Flight flight = flightService.getFlight(flightId);
        if (flight != null) {
            return new ResponseEntity<>(flight, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

    public ResponseEntity<Flight> defaultGetFlight(Integer flightId) {
        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    }
}
Copier après la connexion

Parmi eux, defaultGetFlight est la fonction de rétrogradation.

  1. Sécurité

Dans les systèmes distribués, les questions de sécurité sont très importantes. Spring Cloud fournit une sécurité pour prendre en charge la gestion de la sécurité.

Ajoutez le pom.xml des applications du fournisseur de services et du consommateur de services :

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-security</artifactId>
</dependency>
Copier après la connexion

Configurez dans le fichier application.yml des applications du fournisseur de services et du consommateur de services :

security:
  basic:
    enabled: true

spring:
  security:
    user:
      name: user
      password: password
Copier après la connexion

où le nom et le mot de passe sont respectivement le nom et le mot de passe de l'utilisateur. Il convient de noter que dans les applications réelles, des méthodes plus sécurisées doivent être utilisées pour l'authentification des utilisateurs et la gestion des autorisations.

Ajoutez l'annotation @PreAuthorize au niveau de la classe de FlightController :

@RestController
@RequestMapping("/flights")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public class FlightController {

    @Autowired
    private FlightService flightService;

    @GetMapping("/{flightId}")
    public ResponseEntity<Flight> getFlight(@PathVariable Integer flightId) {
        Flight flight = flightService.getFlight(flightId);
        if (flight != null) {
            return new ResponseEntity<>(flight, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }
}
Copier après la connexion

Parmi elles, l'annotation @PreAuthorize est utilisée pour effectuer une vérification de sécurité sur FlightController. Dans les applications réelles, différentes vérifications de sécurité peuvent être effectuées sur chaque méthode.

De cette manière, nous avons achevé la construction d'un système de vol de microservices Spring Cloud distribué et sécurisé. À travers les cas présentés dans cet article, nous pouvons voir que Spring Cloud fournit une multitude de composants pour nous aider à créer des microservices. Dans le même temps, nous devons également prêter attention à certains défis posés par l'architecture des microservices, tels que l'enregistrement et la découverte des services, la communication entre services, l'équilibrage de charge, la gestion de la configuration, les disjoncteurs, la sécurité et d'autres problèmes. Dans les applications réelles, nous devons sélectionner et configurer la technologie en fonction de scénarios spécifiques.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée sur la façon de désactiver le Centre de sécurité Windows 11 Explication détaillée sur la façon de désactiver le Centre de sécurité Windows 11 Mar 27, 2024 pm 03:27 PM

Dans le système d'exploitation Windows 11, le Centre de sécurité est une fonction importante qui aide les utilisateurs à surveiller l'état de sécurité du système, à se défendre contre les logiciels malveillants et à protéger la vie privée. Cependant, les utilisateurs peuvent parfois avoir besoin de désactiver temporairement Security Center, par exemple lors de l'installation de certains logiciels ou lors du réglage du système. Cet article présentera en détail comment désactiver le Centre de sécurité Windows 11 pour vous aider à utiliser le système correctement et en toute sécurité. 1. Comment désactiver le Centre de sécurité Windows 11 Sous Windows 11, la désactivation du Centre de sécurité ne

Conseils pour désactiver la protection en temps réel dans le Centre de sécurité Windows Conseils pour désactiver la protection en temps réel dans le Centre de sécurité Windows Mar 27, 2024 pm 10:09 PM

Dans la société numérique d’aujourd’hui, les ordinateurs sont devenus un élément indispensable de nos vies. Windows étant l’un des systèmes d’exploitation les plus populaires, il est largement utilisé dans le monde entier. Cependant, à mesure que les méthodes d’attaque des réseaux continuent de se multiplier, la protection de la sécurité des ordinateurs personnels est devenue particulièrement importante. Le système d'exploitation Windows fournit une série de fonctions de sécurité, dont le « Centre de sécurité Windows » est l'un de ses composants importants. Dans les systèmes Windows, "Windows Security Center" peut nous aider

Comment la conception de l'architecture de sécurité du framework Java doit-elle être équilibrée avec les besoins de l'entreprise ? Comment la conception de l'architecture de sécurité du framework Java doit-elle être équilibrée avec les besoins de l'entreprise ? Jun 04, 2024 pm 02:53 PM

La conception du framework Java assure la sécurité en équilibrant les besoins de sécurité avec les besoins de l'entreprise : en identifiant les principaux besoins de l'entreprise et en hiérarchisant les exigences de sécurité pertinentes. Développez des stratégies de sécurité flexibles, répondez aux menaces par niveaux et effectuez des ajustements réguliers. Tenez compte de la flexibilité architecturale, prenez en charge l’évolution de l’entreprise et des fonctions de sécurité abstraites. Donnez la priorité à l’efficacité et à la disponibilité, optimisez les mesures de sécurité et améliorez la visibilité.

Configuration de la sécurité et renforcement du framework Struts 2 Configuration de la sécurité et renforcement du framework Struts 2 May 31, 2024 pm 10:53 PM

Pour protéger votre application Struts2, vous pouvez utiliser les configurations de sécurité suivantes : Désactiver les fonctionnalités inutilisées Activer la vérification du type de contenu Valider l'entrée Activer les jetons de sécurité Empêcher les attaques CSRF Utiliser RBAC pour restreindre l'accès basé sur les rôles

Microframework PHP : discussion sur la sécurité de Slim et Phalcon Microframework PHP : discussion sur la sécurité de Slim et Phalcon Jun 04, 2024 am 09:28 AM

Dans la comparaison de sécurité entre Slim et Phalcon dans les micro-frameworks PHP, Phalcon dispose de fonctionnalités de sécurité intégrées telles que la protection CSRF et XSS, la validation de formulaire, etc., tandis que Slim manque de fonctionnalités de sécurité prêtes à l'emploi et nécessite une implémentation manuelle. de mesures de sécurité. Pour les applications critiques en matière de sécurité, Phalcon offre une protection plus complète et constitue le meilleur choix.

Les nouveaux défis mondiaux de l'IA : qu'est-il arrivé à la sécurité et à la confidentialité ? Les nouveaux défis mondiaux de l'IA : qu'est-il arrivé à la sécurité et à la confidentialité ? Mar 31, 2024 pm 06:46 PM

Le développement rapide de l’IA générative a créé des défis sans précédent en matière de confidentialité et de sécurité, déclenchant des appels urgents à une intervention réglementaire. La semaine dernière, j'ai eu l'occasion de discuter des impacts de l'IA sur la sécurité avec certains membres du Congrès et leur personnel à Washington, D.C. L’IA générative d’aujourd’hui me rappelle l’Internet de la fin des années 1980, avec ses recherches fondamentales, son potentiel latent et ses utilisations académiques, mais elle n’est pas encore prête à être accessible au public. Cette fois, l’ambition sans entrave des fournisseurs, alimentée par le capital-risque des ligues mineures et inspirée par les chambres d’écho de Twitter, fait rapidement progresser le « meilleur des mondes » de l’IA. Le modèle de base « public » est défectueux et inadapté à une utilisation grand public et commerciale ; les abstractions de confidentialité, si elles sont présentes, fuient comme un tamis, les structures de sécurité sont importantes en raison de la surface d'attaque ;

Implémentation d'algorithmes d'apprentissage automatique en C++ : considérations de sécurité et bonnes pratiques Implémentation d'algorithmes d'apprentissage automatique en C++ : considérations de sécurité et bonnes pratiques Jun 01, 2024 am 09:26 AM

Lors de la mise en œuvre d'algorithmes d'apprentissage automatique en C++, les considérations de sécurité sont essentielles, notamment la confidentialité des données, la falsification du modèle et la validation des entrées. Les meilleures pratiques incluent l'adoption de bibliothèques sécurisées, la réduction des autorisations, l'utilisation de bacs à sable et une surveillance continue. Le cas pratique démontre l'utilisation de la bibliothèque Botan pour chiffrer et déchiffrer le modèle CNN afin de garantir une formation et une prédiction sûres.

Quel portefeuille est le plus sûr pour les pièces SHIB ? (À lire pour les débutants) Quel portefeuille est le plus sûr pour les pièces SHIB ? (À lire pour les débutants) Jun 05, 2024 pm 01:30 PM

La pièce SHIB n'est plus étrangère aux investisseurs. Il s'agit d'un jeton conceptuel du même type que le Dogecoin. Avec le développement du marché, la valeur marchande actuelle de SHIB s'est classée au 12e rang. .les investisseurs participent aux investissements. Dans le passé, il y a eu de fréquents transactions et incidents de sécurité des portefeuilles sur le marché. De nombreux investisseurs se sont inquiétés du problème de stockage de SHIB. Ils se demandent quel portefeuille est le plus sûr pour stocker les pièces SHIB à l'heure actuelle. Selon l'analyse des données du marché, les portefeuilles relativement sûrs sont principalement les portefeuilles OKXWeb3Wallet, imToken et MetaMask, qui seront relativement sûrs. Ensuite, l'éditeur en parlera en détail. Quel portefeuille est le plus sûr pour les pièces SHIB ? Actuellement, les pièces SHIB sont placées sur OKXWe

See all articles