J'ai été exposé aux microservices récemment et j'ai une certaine compréhension de cet aspect. Je vais le partager avec vous.
Spring Cloud est un ensemble complet de frameworks pour implémenter les microservices en fonction de Spring Boot. On peut dire que Spring Boot en tant que Framework et Spring Cloud car les microservices forment ensemble un nouveau système de framework qui ne peut pas être ignoré. Il fournit les composants requis pour le développement de microservices tels que la gestion de la configuration, la découverte de services, les disjoncteurs, le routage intelligent, les micro-agents, le bus de contrôle, les verrous mondiaux, les campagnes de prise de décision, les sessions distribuées et la gestion de l'état de cluster, qui sont pratiques et faciles à utiliser. Spring Cloud comprend de nombreux sous-trames, parmi lesquelles Spring Cloud Netflix est l'un des cadres, qui fournissent principalement des modules: découverte de service, disjoncteurs et surveillance, routage intelligent, équilibrage de la charge des clients, etc.
caractéristiques
(1) Eureka, enregistrement des services et découverte, fournit un centre d'enregistrement de service, un client de découverte de services et une interface pratique pour afficher tous les services enregistrés. Tous les services utilisent le client de découverte de services d'Eureka pour s'inscrire au serveur d'Eureka.
(2) Zuul, Gateway, tous les clients demandent d'accéder aux services backend via cette passerelle. Il peut utiliser certaines configurations de routage pour déterminer quel service gère une certaine URL. Et obtenez le service enregistré d'Eureka pour transmettre la demande.
(3) Ruban, c'est-à-dire l'équilibrage de la charge. Lorsque Zuul Gateway envoie une demande à une application d'un certain service, si un service démarre plusieurs instances, elle l'enverra à une certaine instance de service via Ribbon via une certaine politique d'équilibrage de charge.
(4) Fignant, Service Client, si les services doivent accéder les uns aux autres, vous pouvez utiliser RestTemplate ou Fegner Client pour accéder. Il utilise le ruban par défaut pour atteindre l'équilibrage de charge.
(5) Hystrix, surveillance et disjoncteur. Nous avons seulement besoin d'ajouter une balise Hystrix à l'interface de service pour réaliser les fonctions de surveillance et de disjoncteur de cette interface.
(6) Hystrix Dashboard, panneau de surveillance, fournit une interface qui peut surveiller le temps consommé par les appels de service sur chaque service.
(7) La turbine, l'agrégation de surveillance, en utilisant la surveillance Hystrix, nous devons ouvrir les informations de surveillance de chaque instance de service à afficher. La turbine peut nous aider à agréger les informations de surveillance de toutes les instances de service en un seul endroit pour une visualisation unifiée.
Vous pouvez vous référer au document dedans: https://springcloud.cc/spring-cloud-netflix.html
(1) Centre d'enregistrement et de surveillance des services:
@ SpringbootApplication @ ENABEREUREKASERVER @ activerhystrixdashboardpublic class ApplicationRegistry {public static void main (String [] args) {new SpringApplicationBuilder (application.class) .web (true) .run (args); }}Ici, @SpringBootApplication Utilisation de la balise de démarrage Spring montre que l'application actuelle est une application Spring Boot. De cette façon, je peux utiliser directement la fonction principale pour démarrer l'application dans l'IDE, ou je peux le démarrer avec la ligne de commande après l'emballage. Bien sûr, vous pouvez également démarrer le package de guerre emballé avec un serveur tel que Tomcat. Utilisez la balise @enableeurekaserver pour démarrer les composants du registre des services Eureka pendant le démarrage. Il écoutera un port, qui est 8761 par défaut, pour recevoir l'enregistrement des services. Et fournir une page Web. Après l'avoir ouvert, vous pouvez voir le service enregistré. L'ajout de @enablehystrixdashboard fournira une page de surveillance. Nous pouvons saisir l'adresse du service à surveiller dessus pour afficher l'état de l'appel de l'interface avec Hystrix Monitoring activé. Bien sûr, afin d'utiliser les composants ci-dessus, nous devons ajouter des dépendances correspondantes dans le fichier Maven Pom, comme l'utilisation de Spring-Boot-Starter-Parent, en s'appuyant sur Spring-Cloud-Starter-Eureka-Server et Spring-Cloud-Starter-Hystrix-Dashboard.
(2) Appel inter-services:
Il existe deux façons de passer des appels de service, de reposer, et de feignClient. Quelle que soit la méthode, il appelle l'interface HTTP du service via l'interface de repos, et les paramètres et résultats sont sérialisés et désérialisés par défaut via Jackson. Étant donné que l'interface définie par RestController de Spring MVC, les données renvoyées sont sérialisées dans les données JSON via Jackson.
Le premier type: Rest -mplate, vous n'avez qu'à définir un bean Rest -mplate et à le définir sur LoadBalanced:
@ConfigurationPublic class SomeCloudConfiguration {@LoadBalanced @bean restTemplate restTEmplate () {return new restTEmplate (); }}De cette façon, nous pouvons injecter ce haricot où nous en avons besoin:
classe publique SomeServiceClass {@autowired private restTemplate restTemplate; public String getUserById (long userId) {userdto Results = restTemplate.getForObject ("http: // users / getuserDetail /" + userid, userdto.class); Résultats de retour; }}Où, les utilisateurs sont l'ID de service, Ribbon obtiendra une instance de ce service à partir de la liste d'instances de service, envoie une demande et obtiendra le résultat. L'objet userdto nécessite un numéro de série et son numéro anti-série sera automatiquement terminé.
Le deuxième type: feignclient
@FeignClient (valeur = "utilisateurs", path = "/ utilisateurs") Interface publique UserComposiService {@RequestMapping (value = "/ getuserDetail / {id}", méthode = requestMethod.get, produit = mediatype.application_json_value) userdto getUseryId (@pathvarable long id);};Nous avons seulement besoin de définir une excuse en utilisant @FeignClient. Spring Cloud Feign nous aidera à générer une implémentation et à obtenir des données du service des utilisateurs correspondants. Parmi eux, la valeur dans @FeignClient (valeur = "utilisateurs", path = "/ utilisateurs / getUserDetail") est l'ID de service, et Path est le préfixe Path de ce groupe d'interfaces. Dans la définition de la méthode suivante, tout comme la configuration de l'interface Spring MVC, pour cette méthode, son URL correspondante est / utilisateurs / getuserDetail / {id}. Ensuite, lorsque vous l'utilisez, comme injecter un service général, puis l'utiliser:
classe publique SomeotherserviceClass {@Autowired Private UserCositesService UserService; public void DoSomething () {// ...... userdto Results = userService.getUserById (userId); // Autre opération ...}}(3) disjoncteur:
// Disjoncteur de circuit: Afin de résoudre le problème qui appelle la méthode de secours pour remplacer la méthode échouée lorsqu'un appel de méthode échoue, la fonction des erreurs de cascade de tolérance de défaut / de blocage a été obtenue. // FallbackMethod spécifie la méthode de secours @hystrixcommand (FallbackMethod = "DostudentFallback") @ requestmapping (value = "dostudent", méthode = requestMethod.get) public string Dostudent () {return "votre nom: secret, votre âge: secret!";Parmi eux, utilisez @enableCircuitBreaker pour activer le support de disjoncteur de circuit. Spring Cloud fournit une console pour surveiller le fonctionnement du disjoncteur, qui est activé via l'annotation @enablehystrixdashboard.
Ce qui précède est une brève introduction aux composants Spring Cloud Netflix. J'espère que cela sera utile à l'apprentissage de tous, et j'espère que tout le monde soutiendra davantage Wulin.com.