Sans plus attendre, allons droit au but.
En termes simples :Un service léger unique est généralement un microservice indépendant Les microservices se concentrent sur la mise en œuvre d'une certaine fonction. Par exemple, le système de connexion se concentre uniquement sur la mise en œuvre des fonctions de connexion des utilisateurs. Il sort de la boîte et peut être exécuté indépendamment. Le système d'architecture de microservices est un système distribué, qui divise les modules d'unités de service en fonction des activités, résout les défauts d'un système unique et répond de plus en plus aux besoins commerciaux complexes.
Martin Fowler : À l'heure actuelle, il n'existe pas de définition unifiée et standard du secteur des microservices. Mais d’une manière générale, l’architecture des microservices est un modèle architectural ou un style architectural qui préconise de diviser une seule application en un ensemble de petits services. Chaque service fonctionne selon son propre processus indépendant. Les services coopèrent et se coordonnent les uns avec les autres pour offrir aux utilisateurs une valeur ultime. Utilisez une communication légère entre les services. Chaque service est construit autour d'un métier spécifique et peut être déployé indépendamment dans des environnements de production. De plus, un mécanisme de gestion des services unifié et centralisé doit être évité autant que possible.
Microservice est une application de service indépendante avec une seule responsabilité. Dans l'outil Intellij Idea, il existe des modules indépendants développés à l'aide de Maven. Plus précisément, il s'agit d'un petit module développé à l'aide de Springboot pour gérer une seule logique métier professionnelle.
Les microservices mettent l'accent sur la taille du service, en se concentrant sur un certain point, résolvant spécifiquement un certain problème/implémentant une application de service correspondante, qui peut être considérée comme un module dans l'idée.
Par exemple, si vous allez à l'hôpital : vos dents sont inconfortables, alors vous allez chez le dentiste. Si vous avez mal à la tête, rendez-vous dans un service du cerveau. Chaque département est un microservice et chaque fonction est un service.
Communication synchrone : dobbo via Appel de procédure à distance RPC, springcloud via l'appel json de l'interface REST, etc. Asynchrone : file d'attente de messages, telle que : RabbitMq, ActiveM, Kafka, etc.
Tout d'abord, ce sont tous des cadres de gestion distribués.
dubbo est une transmission binaire, qui consomme moins de bande passante. SpringCloud utilise la transmission http, qui a un peu plus de bande passante. Lors de l'utilisation du protocole http, les messages JSON sont généralement utilisés, ce qui consomme plus.
Dubbo est difficile à développer, et les packages jar sur lesquels il s'appuie ont de nombreux problèmes les grands projets ne peuvent pas être résolus. L'héritage de tiers de SpringCloud peut être généré en un clic et naturellement intégré.
.
SpringBoot : concentrez-vous sur le développement rapide et pratique d'un microservice individuel unique (concentrez-vous sur le microservice) : concentrez-vous sur le cadre global de coordination et de gouvernance des microservices, combinez et gérez les microservices individuels développés par SpringBoot (concentrez-vous sur) ; la macro);
SpringBoot peut être utilisé indépendamment sans SpringCloud, mais SpringCloud ne peut pas être utilisé sans SpringBoot, qui est une relation de dépendance.
La fonction du disjoncteur de service est similaire à celle de notre fusible domestique. Lorsqu'un service devient indisponible ou que le délai de réponse expire, afin d'éviter une avalanche de l'ensemble du système, les appels au service sont temporairement arrêtés.
La dégradation du service est basée sur la situation de charge de l'ensemble du système. Pour certaines situations où la charge est relativement élevée, afin d'éviter que certaines fonctions (scénarios métiers) ne soient surchargées ou ne répondent lentement, en interne abandonner temporairement les demandes de certaines interfaces et données non essentielles, et renvoie directement des informations de gestion des erreurs de secours préparées à l'avance. De cette manière, même si un service avec perte est fourni, la stabilité et la disponibilité de l'ensemble du système sont garanties.
Avantages : Couplage lâche, centré sur une seule fonction métier, indépendante des langages de développement, et taille d'équipe réduite. Pendant le développement, vous n'avez pas besoin de connaître grand-chose sur l'entreprise, concentrez-vous simplement sur les fonctions actuelles, qui sont pratiques et centralisées, et les fonctions sont petites et raffinées. Si une fonction d’un microservice est endommagée, cela n’aura pas beaucoup d’impact sur les autres fonctions et le problème peut être rapidement localisé. Les microservices se concentrent uniquement sur le code de logique métier actuel et ne seront pas mélangés avec du HTML, du CSS ou d'autres interfaces. Il peut être associé de manière flexible à la technologie et il est plus confortable d'être indépendant.
Inconvénients : à mesure que le nombre de services augmente, la gestion est complexe, le déploiement est complexe, les exigences du serveur augmentent, la pression des communications et des appels de service augmente, les ingénieurs d'exploitation et de maintenance augmentent la pression, les ressources humaines augmentent, les dépendances du système augmentent et la cohérence des données augmente, la surveillance des performances.
zookeeper est un principe CP, forte cohérence et tolérance aux pannes de partition. eureka est le principe AP de disponibilité et tolérance de partition. ZooKeeper Lorsque le nœud maître échoue, ZooKeeper resélectionnera le nœud maître parmi les nœuds restants, ce qui prend trop de temps. Bien qu'il puisse éventuellement être restauré, le service sera indisponible lors de la sélection du nœud maître, ce qui ne peut être toléré. Tous les nœuds d'Eureka sont égaux. Si un nœud raccroche, les autres nœuds maintiendront toujours un service normal.
Appel de service | |
---|---|
Disjoncteur de service | Hystrix, Envoy, etc. |
Équilibrage de charge | Nginx, Ribbon, etc. |
Appel d'interface de service (outil client simplifié) | Fegin etc. |
Mes, sauge queue | Kafka、 RabbitMQ, ActiveMQ, etc. |
Gestion du centre de configuration des services | SpringCloudConfig, Chef, etc. |
Routage des services (passerelle API) | Zuul, etc. |
Surveillance des services | Zabbix, Nagios, Metrics, Spectator et plus |
Suivi complet des liens | Zipkin, Brave, Dapper, etc. |
Déploiement de services | Docker, OpenStack, Kubernetes, etc. |
Kit de développement d'opérations de flux de données | SpringCloud Stream (encapsulé avec Redis, Rabbit , kafka, etc. Envoyer et recevoir des messages) |
Event Message Bus | Spring Cloud Bus |
Si vous avez compris plus tôt ce que sont les microservices, alors vous comprenez déjà l'architecture des microservices.
L'architecture des microservices consiste à gérer, intégrer et appliquer des microservices. L'architecture des microservices repose sur des microservices et est basée sur des microservices.
Par exemple : Que sont les microservices ont été répertoriés ci-dessus. Dans un hôpital, chaque service est un microservice indépendant, l'hôpital est donc une architecture de microservices à grande échelle, tout comme le directeur peut gérer les services suivants. L'architecture des microservices a principalement cette fonction.
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!