Notes de démarrage de SpringCloud

Nuage de printemps

Depuis que Spring Cloud a publié la première version Angel.SR5 en janvier 2016, cela fait 4 ans que la version Hoxton.SR3 est sortie en mars 2020. Au cours des 4 dernières années, Spring Cloud a publié un total de 46 versions et le nombre de composants pris en charge est passé de 5 à 21. Spring Cloud a annoncé la RoadMap de suivi en décembre 2019:

  • La prochaine version, la version Ilford, est une version majeure. Cette version est basée sur Spring Framework 5.3 et Spring Boot 2.4 et sera publiée vers le quatrième trimestre 2020;
  • La version Ilford supprime les projets en mode maintenance. La plupart des projets Netflix actuellement en mode maintenance seront supprimés (le projet Github spring-cloud-netflix a supprimé ces projets en mode maintenance);
  • Simplifiez le train de versions de Spring Cloud. Les projets Spring Cloud ultérieurs correspondant aux fournisseurs IaasS seront déplacés hors de l'organisation Spring Cloud et maintenus séparément (spring-cloud-azure a toujours été maintenu séparément, et spring-cloud-alibaba est incubé dans l'organisation Spring Cloud et maintenu séparément après l'obtention du diplôme. );
  • La refactorisation de l'API apportera des changements majeurs (la version Spring Cloud Hoxton ajoute le modèle de programmation Spring Cloud Circuit Breaker pour une opération de fusion unifiée et Spring Cloud Load Balanacer pour gérer l'équilibrage de charge client et remplacer le ruban Netflix).

Cette RoadMap peut être considérée comme un très grand changement par rapport à Spring Cloud.

Implémentation alternative SpringCloud

Insérez la description de l'image ici

SpringCloud Alibaba

Composant

Sentinel : En ce qui concerne le flux comme point d'entrée, il protège la stabilité du service de multiples dimensions telles que le contrôle de flux, la dégradation des fusibles et la protection de la charge du système.

Nacos : une plate-forme dynamique de découverte de services, de gestion de configuration et de gestion de services qui facilite la création d'applications cloud natives.

RocketMQ : un système de messagerie distribuée open source, basé sur une technologie de cluster distribué à haute disponibilité, fournit des services de publication de messages et d'abonnement à faible latence et très fiables.

Dubbo : Apache Dubbo ™ est un framework Java RPC hautes performances.

Seata : le produit open source d'Alibaba, une solution de transaction distribuée de microservices hautes performances facile à utiliser.

Alibaba Cloud ACM : un produit de centre de configuration d'applications qui gère et pousse de manière centralisée la configuration des applications dans un environnement d'architecture distribuée.

Alibaba Cloud OSS : Alibaba Cloud Object Storage Service (OSS) est un service de stockage en nuage massif, sécurisé, peu coûteux et hautement fiable fourni par Alibaba Cloud . Vous pouvez stocker et accéder à tout type de données dans n'importe quelle application, à tout moment et en tout lieu.

Alibaba Cloud SchedulerX : un produit de planification de tâches distribué développé par l'équipe middleware d' Alibaba , qui fournit des services de planification de tâches de deuxième niveau, précis, hautement fiables et hautement disponibles (basés sur des expressions Cron).

Alibaba Cloud SMS : un service SMS mondial, des capacités de communication interconnectées conviviales, efficaces et intelligentes pour aider les entreprises à créer rapidement des canaux d'accès client.

Points techniques Spring Cloud

Eureka: enregistrement et découverte de services, utilisés pour la gestion des services.

Feign: client d'appel Web, qui peut simplifier l'appel de l'interface HTTP.

Ruban: Équilibrage de charge basé sur le client.

Hystrix: rétrogradation du fusible pour éviter une avalanche de service.

Zuul: Routage de passerelle, qui fournit des fonctions telles que le transfert de routage, le filtrage des demandes, la limitation du courant et la rétrogradation.

Config: Centre de configuration, gestion de configuration distribuée.

Détective: suivi des liens de service

Admin: gestion de la santé

Vue d'ensemble de l'évolution des services

  1. Évolution des services traditionnels aux microservices.

  2. Application monolithique -> SOA -> Microservice (parlons-en ci-dessous)

课外扩展:
持续集成,持续部署,持续交付。
集成:是指软件个人研发的部分向软件整体部分集成,以便尽早发现个人开发部分的问题;
部署: 是代码尽快向可运行的开发/测试节交付,以便尽早测试;
交付: 是指研发尽快向客户交付,以便尽早发现生产环境中存在的问题。
   如果说等到所有东西都完成了才向下个环节交付,导致所有的问题只能在最后才爆发出来,解决成本巨大甚至无法解决。而所谓的持续,就是说每完成一个完整的部分,就向下个环节交付,发现问题可以马上调整。使问题不会放大到其他部分和后面的环节。
   这种做法的核心思想在于:既然事实上难以做到事先完全了解完整的、正确的需求,那么就干脆一小块一小块的做,并且加快交付的速度和频率,使得交付物尽早在下个环节得到验证。早发现问题早返工。

上面的3个持续,也都随着微服务的发展而发展,当架构师的同学,可以参考这种方式。

持续集成的工具,向大家推荐:https://jenkins.io/doc/book/pipeline/

Application monolithique

  1. Concept: toutes les fonctions sont regroupées. La plupart des applications sont un package war ou un package jar. La structure initiale de ma participation à la transmission de voitures en ligne est la suivante: un projet de passagers a des fonctions telles que les utilisateurs, les commandes, les messages et les cartes. Au fur et à mesure que l'entreprise se développe et que les fonctions augmentent, ce projet deviendra de plus en plus gonflé.

  2. Avantages: Facile à développer, tester et déployer, adapté aux essais et erreurs initiaux du projet.

  3. préjudice:

    Au fur et à mesure que le projet devient de plus en plus complexe, l'équipe continue de s'agrandir. Les inconvénients sont révélés.

    • Complexité élevée: beaucoup de code, cent mille lignes, un million de lignes au niveau. L'ajout d'une petite fonction apportera des dangers cachés à d'autres fonctions, car elles sont ensemble.
    • Dette technique: le flux de personnel, il n'est ni cassé ni réparé, car il a peur de le réparer.
    • Difficulté de déploiement continu: comme il s'agit d'une application complète, la modification d'une petite fonction et son déploiement complet entraîneront la suspension de fonctions non liées. La compilation et le déploiement en ligne prennent beaucoup de temps, et ils n'osent pas se déployer de manière désinvolte, ce qui entraîne une faible fréquence de déploiement, ce qui entraîne davantage de changements fonctionnels entre deux déploiements.
    • Faible fiabilité: un petit problème, tel que MOO dans une petite fonction, provoquera le blocage de l'ensemble de l'application.
    • Expansion restreinte: elle ne peut être étendue que dans son ensemble et ne peut pas être étendue selon les besoins. Elle ne peut pas être correctement distinguée en fonction du calcul intensif (système d'envoi des commandes) et du service IO-intensif (service de fichiers).
    • Obstruction à l'innovation: les applications monolithiques utilisent une seule technologie pour résoudre tous les problèmes, et il n'est pas facile d'introduire de nouvelles technologies. Mais dans le développement de l'Internet à haut débit, la tendance à l'adaptation est la suivante: faire les bonnes choses dans la bonne langue. Par exemple, dans une application monolithique, un projet utilise Spring MVC et souhaite passer en spring boot. Le coût de commutation est très élevé, car il peut y avoir 100 000 ou un million de lignes de code à modifier et les microservices peuvent être facilement commutés, car chaque service, La fonction est simple et le code est petit.

SOA

对单体应用的改进:引入SOA(Service-Oriented Architecture)面向服务架构,拆分系统,用服务的流程化来实现业务的灵活性。服务间需要某些方法进行连接,面向接口等,它是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在于操作系统进程中。各个服务之间 通过网络调用。但是还是需要用些方法来进行服务组合,有可能还是个单体应用。

Par conséquent, l'introduction de microservices est une pratique concrète de la pensée SOA.

Architecture de microservices = 80% de réflexion sur l'architecture de services SOA + 100% de réflexion sur l'architecture à composants

Microservice

Présentation des microservices

  • Pas de définition stricte.
  • Microservice est un style architectural qui divise une seule application en petites unités de service.
  • L'architecture de microservice est un moyen de développer une application unique en utilisant une série de services avec une granularité plus petite; chaque service s'exécute dans son propre processus; les services utilisent un moyen léger de communiquer (généralement une API HTTP); ces services Il est déployé indépendamment en fonction de l'entreprise la logique et la portée grâce à un mécanisme de déploiement automatisé et la gestion centralisée des services doivent être minimales, c'est-à-dire que chaque service peut être écrit dans différents langages de programmation et utiliser différentes technologies de stockage de données.
  • Définition anglaise:
看这篇文章:
http://www.martinfowler.com/articles/microservices.html
  • Petite analogie

    Ensemble pendant une longue période sera divisé. Communication après séparation, déploiement indépendant et stockage indépendant.

分封制:
服从天子命令:服从服务管理。
有为天子镇守疆土的义务:各自完成各自的一块业务。
随从作战:服务调用。
交纳贡献:分担流量压力。
  • Duan (Stratégie Chine-Taiwan)
Q:大师大师,服务拆多了怎么办?
A:那就再合起来。
Q:那太没面子了。
A:那就说跨过了微服务初级阶段,在做中台(自助建站系统)。

Caractéristiques des microservices

Exécutez indépendamment dans son propre processus.

Une série de services indépendants construisent ensemble l'ensemble du système.

Un service se concentre uniquement sur sa propre entreprise indépendante.

Mécanisme de communication léger API RESTful

Développement dans différentes langues

Mécanisme de déploiement entièrement automatique

Introduction aux composants de microservice

Non limité aux technologies d'implémentation de microservices spécifiques.

  • Enregistrement et découverte du service: le fournisseur de services enregistre son adresse d'appel dans le registre des services, de sorte que l'appelant du service puisse se trouver facilement; l'appelant du service trouve l'adresse du service qu'il doit appeler à partir du registre des services.

  • Équilibrage de charge: le fournisseur de services fournit généralement des services sous la forme d'instances multiples. La fonction d'équilibrage de charge permet à l'appelant du service de se connecter au nœud de service approprié. De plus, le processus de sélection du nœud de service est transparent pour l'appelant du service.

  • Passerelle de service: la passerelle de service est le seul point d'entrée pour l'appel de service. Dans ce composant, des fonctions telles que l'authentification de l'utilisateur, le routage dynamique, la libération grise, les tests A / B et la limitation du courant de charge peuvent être implémentées.

    灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
    
  • Centre de configuration: enregistrez les informations de configuration localisées (Propriétés, XML, YAML, etc.) dans le centre de configuration pour réaliser le caractère indistinct du package dans l'environnement de développement, de test et de production, faciliter la migration du package et également avoir un état sans état. fonctionnalité.

  • Cadre d'intégration: tous les composants de microservice fournissent des services externes dans un package à service unique. Le cadre d'intégration intègre tous les composants de microservice (en particulier les composants côté gestion) dans un cadre d'interface unifié sous forme de configuration, permettant aux utilisateurs d'être dans une interface unifiée Utilisation le système. Spring Cloud est un framework intégré.

  • Surveillance de la chaîne d'appels: enregistrez la connexion et la relation d'appel lors de l'exécution d'une demande, et affichez cette relation d'appel série ou parallèle. Lorsque le système tourne mal, vous pouvez facilement trouver le point d'erreur.

  • Plate-forme de prise en charge: une fois le système micro-entretenu, chaque module métier est divisé et devient plus détaillé. Le déploiement, l'exploitation, la maintenance et la surveillance du système sont plus compliqués que l'architecture d'application unique, qui nécessite l'automatisation de la plupart des travaux . Désormais, Docker et d'autres outils peuvent apporter plus de commodité au déploiement de l'architecture de microservices, tels que l'intégration continue, la version bleu-vert, la vérification de l'état, la surveillance des performances, etc. S'il n'y a pas de plate-forme ou d'outils de support appropriés, l'architecture de micro-service ne pourra pas exercer son effet maximal.

    1. 蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本。
    2. 灰度是选择部分部署新版本,将部分流量引入到新版本,新老版本同时提供服务。等待灰度的版本OK,可全量覆盖老版本。
    
    灰度是不同版本共存,蓝绿是新旧版本切换,2种模式的出发点不一样。
    

Avantages des microservices

  1. Déploiement indépendant. Il ne s'appuie pas sur d'autres services, a un faible couplage et ne se soucie pas de l'impact du déploiement d'autres services sur lui-même.
  2. Facile à développer et à maintenir: Concentrez-vous sur une entreprise spécifique, afin que l'entreprise soit claire, que la quantité de code soit faible et que le module devienne facile à développer, à comprendre et à maintenir.
  3. Bloc de démarrage: il y a peu de fonctions et peu de codes, donc il démarre rapidement. Il y a des services qui doivent être arrêtés pour maintenance, et les services ne seront pas suspendus pendant longtemps.
  4. La modification partielle est facile: il suffit de déployer le service correspondant, adapté au développement agile.
  5. Pile technologique illimitée: java, node.js, etc.
  6. Évolutivité à la demande: un certain service est limité, de la mémoire, un processeur, etc. peuvent être ajoutés selon les besoins.
  7. Responsabilité unique. Des équipes spécialisées sont responsables des affaires spécialisées, ce qui est propice à la division du travail.
  8. Réutilisation du code. Pas besoin de réécrire. L'implémentation sous-jacente est fournie via une interface.
  9. Faciliter la collaboration en équipe: chaque équipe n'a besoin que de fournir une API. Une fois l'API définie, elle peut être développée en parallèle.

Inconvénients des microservices

  1. La complexité inhérente au distribué: tolérance aux pannes (un temps d'arrêt du service), délai du réseau, relations d'appels, transactions distribuées, etc.

  2. Le défi des transactions distribuées: chaque service a sa propre base de données, le fait est que différents services peuvent choisir la base de données qui convient à leur activité. Utilisez MySQL pour les commandes, Mongodb pour les commentaires, etc. La solution la plus idéale à l'heure actuelle est: la cohérence ultime des transactions flexibles.

    刚性事务:遵循ACID原则,强一致性。
    柔性事务:遵循BASE理论,最终一致性;与刚性事务不同,柔性事务允许一定时间内,不同节点的数据不一致,但要求最终一致。
    
    BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。BASE理论是对CAP中AP的一个扩展,通过牺牲强一致性来获得可用性,当出现故障允许部分不可用但要保证核心功能可用,允许数据在一段时间内是不一致的,但最终达到一致状态。满足BASE理论的事务,我们称之为“柔性事务”。
    
  3. Le coût de l'ajustement d'interface est élevé: si une interface est modifiée, l'appelant doit la changer.

  4. Augmentation de la difficulté des tests: un changement d'interface, tous les appelants doivent tester. Les tests automatisés deviennent importants. La gestion de la documentation API est également particulièrement importante. Recommander: yapi.

  5. Exigences élevées en matière d'exploitation et de maintenance: des dizaines de centaines de services doivent être maintenus. Le suivi devient compliqué. Et faites également attention à plusieurs clusters, contrairement au single original, une application peut fonctionner normalement.

  6. Travail en double: par exemple, les classes d'outils Java peuvent être partagées dans common.jar, mais cela ne fonctionne pas dans plusieurs langues. C ++ ne peut pas utiliser directement les packages java jar.

Principes de conception

Principe de responsabilité unique: se concentrer sur une partie distincte et délimitée de l'ensemble de la fonction du système.

Principe d'autonomie de service: il peut être indépendamment développé, testé, construit, déployé, exécuté et découplé des autres services.

Principes de communication légers: léger, multiplateforme et multilingue. REST, AMQP, etc.

Contrôle de la granularité: combinez-le avec votre propre réalité. Ne recherchez pas la perfection, ajustez-vous au fur et à mesure que l'entreprise évolue. "Technologie Taobao Ces 10 Ans".

Sélection de technologie

  1. Comparaison des composants Spring Cloud et dubbo

    dubbo:zookeeper+dubbo+springmvc/springboot
    通信方式:rpc
    注册中心:zookeeper,nacos
    配置中心:diamond(淘宝开发)
    
    spring cloud:spring+Netflix
    通信方式:http restful
    注册中心:eureka,consul,nacos				
    配置中心:config
    断路器:hystrix
    网关:zuul,gateway
    分布式追踪系统:sleuth+zipkin
    
    
  2. différence

    dubbo nuage de printemps
    Contexte Grande influence domestique Grande influence à l'étranger Attacher
    Activité communautaire Faible (c'est bon encore) haut le cloud gagne
    Intégrité architecturale Imparfait (certains dubbo ne fournissent pas et nécessitent un tiers, ils se concentrent uniquement sur la gouvernance des services) Il est relativement complet et contient tout ce dont vous avez besoin pour les composants de microservice. le cloud gagne
    Coût d'apprentissage dubbo a besoin de soutenir l'apprentissage Printemps sans couture le cloud gagne
    performance haut. (Basé sur Netty) faible. (Basé sur http, il doit être créé à chaque fois). Cette perte de performances est acceptable pour la plupart des applications. L'API de style HTTP est très pratique. La commodité est remplacée par une petite perte de performance. dubbo gagne

Nuage de printemps

concept

Spring Cloud est une collection organique d'une série de frameworks qui implémentent une architecture de microservices.

Il s'agit d'un ensemble d'outils construit sur la base de Spring Boot pour simplifier la construction de systèmes distribués. C'est un ensemble de projets avec de nombreux sous-projets. Grâce à la commodité de développement de Spring Boot, le développement d'une infrastructure de système distribué (enregistrement et découverte de services, mécanisme de fusible, routage de passerelle, centre de configuration, bus de messages, équilibrage de charge, suivi des liens, etc.) est ingénieusement simplifié.

Évolution de la version

  1. Processus de version: nom de la version. Numéro de version.

  2. Nom de la version: Ordre alphabétique du métro de Londres.

  3. Numéro de version: M (jalon): jalon,

    SR (Service Releases): version stable,

    RC (Release Candidate): La version candidate de la version stable, qui est la dernière version de la version stable.

看官网:查询每个cloud版本下面的子模块的版本。
https://spring.io/projects/spring-cloud
此网页的最下面,目前最新的SpringCloud最新版本是:Greenwich.SR2
版本记录
https://github.com/spring-cloud/spring-cloud-release/releases

Structure générale

composition:

  1. Enregistrement des services et composants de découverte: Eureka, Zookeeper, Consul, Nacos, etc. Eureka est basé sur le style REST.

  2. Composants d'appel de service: Hystrix (dégradation du fusible, en cas de panne de service dépendante, en isolant le service dépendant du système pour éviter une panne de service en cascade, et en fournissant un mécanisme de retour arrière pour permettre au système de récupérer plus rapidement de l'exception), ruban ( Équilibrage de charge client, utilisé pour fournir des algorithmes d'équilibrage de charge logiciel côté client, fournissant une série d'éléments de configuration complets: délai de connexion, nouvelle tentative, etc.), OpenFeign (encapsulation élégante de Ribbon, est un client de demande de réseau RESTful déclaratif Il facilite les choses et plus rapide à écrire des clients de service Web).

  3. Passerelle: routage et filtrage. Zuul, passerelle.

  4. Centre de configuration: fournit les fonctions de gestion centralisée de la configuration et de configuration d'actualisation dynamique; la configuration est stockée via Git ou d'autres méthodes.

  5. Composants de message: Spring Cloud Stream (messages distribués abstraits, y compris la publication et l'abonnement, la consommation de paquets, etc., pour obtenir une communication asynchrone entre les microservices) et Spring Cloud Bus (fournissant principalement une communication événementielle entre les services, telle qu'une configuration actualisée)

  6. Composant de contrôle de sécurité: basé sur la norme de sécurité de réseau ouvert OAuth2.0, Spring Cloud Security fournit des fonctions telles que l'authentification unique, l'autorisation des ressources et la gestion des jetons.

  7. Composants de suivi des liens: Spring Cloud Sleuth (collecte des données sur le lien d'appel), Zipkin (stocke, compte et affiche les informations collectées par Sleuth).

    Le contenu de chaque point sera discuté plus tard.

Rédaction indépendante de microservices

outils de développement

STS / IDÉE

https://spring.io/tools

objectif

Regardez l'effet du registre eureka grâce à ce service.

Passez en revue Spring Boot.

Réduisez beaucoup de configuration. Développement rapide.

Utilisez Starter pour intégrer un nouveau framework. Tels que redis, web, etc. Ajoutez des dépendances, ajoutez des fichiers de configuration.

Le serveur intégré facilite le développement et le déploiement.

Spring Boot介绍:
https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/

Je suppose que tu aimes

Origine blog.csdn.net/qq_38238041/article/details/106737681
conseillé
Classement