Passage de l'architecture monolithique à l'architecture des microservices, questions logiques de l'examen écrit d'entrevue Java

Android Ma'an 2021-08-19 20:59:12 阅读数:239

passage architecture monolithique architecture des
  • Distant fourni par l'application de l'unit é d'échange d'air API
  • Accès direct à la base de données des applications monomères
  • Tenir à jour une copie des données synchronisées à partir d'une seule application

Le Code colle est aussi connu sous le nom de couche de tolérance aux catastrophes(anti-corruption layer),C'est parce que le Code colle protège le nouveau modèle de domaine de microservice contre la contamination du modèle de domaine d'application monomère traditionnel.Le Code colle assure la traduction entre les deux modèles.Terminologie anti-corruption layer Première apparition dans Eric Evans L'écriture doit être lue Domain Driven Design,Il a ensuite été affiné en un livre blanc.Il n'est peut - être pas très important de développer une couche de reprise après sinistre,Mais c'est une partie nécessaire pour éviter le bourbier monomère.

La mise en œuvre de nouvelles fonctionnalités en tant que microservice léger présente de nombreux avantages,Par exemple, vous pouvez empêcher les applications individuelles de devenir plus ingérables..Les microservices eux - mêmes peuvent être développés、Déploiement et extension autonome.L'adoption de l'architecture des microservices apporte aux développeurs une expérience personnelle différente.

Et pourtant,Cette approche ne résout aucun problème avec le monomère lui - même,Pour résoudre le problème du monomère lui - même, il faut aller plus loin dans l'application monomère pour apporter des changements.Voyons la stratégie pour le faire.

Stratégie 2——Séparer l'avant et l'arrière

La stratégie de réduction de la complexité de l'application monomère est axée sur la couche de présentation et la logique opérationnelle、Les couches d'accès aux données sont séparées.Une application d'entreprise typique comporte au moins trois éléments différents:

  1. Couche de présentation——Traitement HTTP Demande,Ou répondre à un RESTAPI Demande,Ou fournir une base HTML Interface graphique pour . Pour une application d'interface utilisateur complexe , La couche de présentation est souvent une partie importante du Code .

  2. Niveau logique d'entreprise—— Compléter le noyau d'application de la logique d'entreprise .

  3. Couche d'accès aux données—— Accès aux éléments de base , Par exemple, les bases de données et les agents de messagerie .

Il existe une séparation claire entre la couche de présentation et la couche d'accès aux données d'affaires . La couche affaires a une granularité grossière composée de plusieurs aspects (coarse-grained)De API, L'intérieur contient des éléments de logique d'entreprise .API Est la limite naturelle qui peut diviser une entreprise monomère en deux applications plus petites , Une des applications est la couche de présentation , L'autre est la logique d'entreprise et d'accès aux données . Après la Division , Application de la logique de présentation appel à distance application de la logique d'entreprise , La figure suivante montre les différences de schéma avant et après la migration :

Les applications monomères ont deux avantages à cette segmentation , L'un d'eux a permis le développement en deux parties de l'application 、 Déploiement et extension indépendants les uns des autres ,En particulier, Permet aux développeurs de couche de présentation de choisir rapidement sur l'interface utilisateur ,En cours A/B Tests;Deux., Ça rend un peu distant API Peut être appelé par microservice .

Et pourtant, Cette stratégie n'est qu'une solution partielle . Il est probable que l'une ou l'autre des parties de l'application, ou les deux, ne sont pas gérables , Une troisième stratégie est donc nécessaire pour éliminer les architectures monomères restantes .

Stratégie 3—— Service de retrait

La troisième stratégie de migration consiste à extraire certains modules d'une application monomère pour en faire des microservices autonomes . Chaque fois qu'un module est extrait pour devenir un microservice , Les applications monomères deviennent plus simples ; Une fois que suffisamment de modules ont été convertis , L'application monomère elle - même n'est plus un problème , Ou disparaître , Ou simplement devenir un service .

Trier ce module devrait être converti en microservice

Une grande application monomère complexe se compose de dix ou cent modules , Chacun est l'objet extrait . Décider du premier module à extraire est généralement un défi , Il est généralement préférable de commencer par le module le plus facile à extraire , Cela permettra aux développeurs d'accumuler assez d'expérience , Ces expériences peuvent apporter d'énormes avantages aux travaux de modularisation ultérieurs .

La conversion des modules en microservices prend généralement du temps , Il est généralement possible de classer les avantages en fonction de leur degré , Les avantages sont généralement les plus importants en commençant par des modules qui changent fréquemment . Une fois qu'un module est converti en microservice , Vous pouvez le développer en modules autonomes , Pour accélérer le processus de développement .

C'est aussi l'un des critères de tri pour extraire d'abord les grands consommateurs de ressources .Par exemple, Il serait très utile d'extraire une base de données de mémoire pour en faire un micro - service , Il peut être déployé sur un hôte à grande mémoire .La même chose., Il est également très utile d'extraire des applications algorithmiques sensibles aux ressources informatiques , Ce service peut être déployé dans un grand nombre de CPU Sur l'ordinateur central de . En convertissant le module de consommation de ressources en microservice , Peut rendre l'application facile à étendre .

Rechercher les limites de grain grossier existantes pour déterminer quel module doit être extrait , C'est aussi très utile , Cela rend la transplantation plus facile et plus facile .Par exemple, Un module qui ne synchronise les messages qu'avec d'autres applications asynchrones est une limite évidente , Il peut être facilement converti en microservice .

Comment extraire les modules

La première étape de l'extraction du module consiste à définir l'interface à grain grossier entre le module et l'application monomère , Parce que les applications monomères nécessitent des données microservices ,Et vice versa, Donc C'est plus comme un bidirectionnel API. Parce qu'il faut trouver un équilibre entre les dépendances responsables et les modes d'interface à grain fin , Donc développer ce API C'est très difficile , Plus particulièrement pour la couche logique d'entreprise qui utilise le modèle de domaine , Il est donc souvent nécessaire de modifier le Code pour résoudre les dépendances ,Comme le montre la figure:

Une fois l'interface grossière terminée , Convertit également ce module en un microservice autonome .Pour réaliser, Le code doit être écrit pour permettre la communication entre les applications monomères et les microservices en utilisant des processus inter (IPC)Mécanisme API Pour échanger des informations . Comparaison avant et après la migration comme le montre la figure :

Préparation de l'entrevue+Examen du partage des données:

Beaucoup de questions d'entrevue et de documents ont été brossés pour faire face à l'entrevue,Partagez - le maintenant avec vos lecteurs dans le besoin,Je n'ai intercepté qu'une partie des données,Tu peux venir me chercher si tu as besoin

 Comment obtenir:Disponible gratuitement en cliquant sur la police bleue

Un coup d'automne.|MeituanjavaUn côté et deuxHRFace à face,Partager le caractère de l'accumulation

Copyright:Cet article est[Android Ma'an]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210819205906995z.html