编程知识 cdmana.com

Ne dites pas que vous ne pouvez pas surveiller et ajuster les performances JVM, 2021 Huawei Java Advanced interview Questions and Answers,

Stratégie 1——Arrêtez de creuser.

Law of Holes Ça veut dire que tu devrais arrêter de creuser quand tu entres dans le trou.C'est la meilleure recommandation pour les applications uniques qui ne sont pas gérables.En d'autres termes,,Vous devriez arrêter de laisser l'application monomère continuer à croître,C'est - à - dire qu'il ne faut pas ajouter de nouveau Code aux anciennes applications monomères lors du développement de nouvelles fonctionnalités,.La meilleure approche devrait être de développer de nouvelles fonctionnalités en microservices autonomes.Comme le montre la figure ci - dessous:

Ne dis pas ça.JVMSurveillance et réglage des performances,2021HuaweiJavaQuestions d'entrevue avancées et réponses,_Java

En plus des nouveaux services et des applications traditionnelles,Et deux autres modules,L'un est de demander au routeur,Responsable du traitement des entrées(http)Demande,Un peu comme mentionné précédemment API Passerelle.Le routeur envoie une demande de nouvelle fonctionnalité au service nouvellement développé,Et la demande traditionnelle est également envoyée à l'application monomère.

L'autre est le Code de colle(glue code),Intégration des microservices et des applications individuelles,Les micro - services sont rarement indépendants,Accès fréquent aux données des applications individuelles.Code de colle,Peut être utilisé dans une seule application ou pour un service ou les deux,Responsable de l'intégration des données.Les microservices lisent et écrivent des données à partir d'applications monomères via des codes de colle.

.Il existe trois façons pour les microservices d'accéder aux données d'application monomère:

  • 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:

Ne dis pas ça.JVMSurveillance et réglage des performances,2021HuaweiJavaQuestions d'entrevue avancées et réponses,_Java_02

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:

Ne dis pas ça.JVMSurveillance et réglage des performances,2021HuaweiJavaQuestions d'entrevue avancées et réponses,_Programmeur_03

Dans cet exemple,,Utilisé Y Du module Z Le module est un autre module d'extraction,Ses éléments sont X Utilisation du module,La première étape de la migration consiste à définir un ensemble de grains grossiers APIs,La première interface devrait être X Interface interne utilisée par le module,Pour activer Z Module;La deuxième interface est Z Interface externe utilisée par le module,Pour activer Y Module.

La deuxième étape de la migration consiste à convertir le module en un service autonome . Les interfaces internes et externes sont basées sur IPC Code du mécanisme , D'habitude, ils Z Les modules sont intégrés dans un cadre de base pour les microservices , Pour sortir des problèmes de découpe , Par exemple, découverte de service .

Module extrait , Peut également être développé 、 Déployer et étendre un autre service , Ce service est indépendant des applications individuelles et d'autres services . Vous pouvez implémenter le service en écrivant du Code à partir de zéro ;Dans ce cas, Intégration des services et des applications individuelles API Le code devient une couche de reprise après sinistre , Traduction entre deux modèles de domaine . Pour chaque service extrait , Un pas en avant vers le micro - service .Au fil du temps, Les applications monomères seront de plus en plus simples , Les utilisateurs peuvent ajouter plus de micro - services indépendants . Migration des applications existantes vers des applications modernes de l'architecture des microservices , Cela ne devrait pas être fait en réécrivant le code à partir de zéro ,Au contraire., Il faudrait procéder par étapes . Trois stratégies peuvent être envisagées : Mettre en œuvre de nouvelles fonctionnalités sous forme de microservice ; Séparer la couche de présentation de la couche d'accès aux données d'affaires ; Transformer les modules existants en microservices .Au fil du temps, Le nombre de micro - services augmentera , La résilience et l'efficacité de l'équipe de développement seront grandement améliorées .

Enfin

JavaLe contenu technique de l'apprentissage de l'architecture comprend:Spring,Dubbo,MyBatis, RPC, Analyse des sources,Forte concurrence、Haute performance、Distribué,Optimisation des performances,Microservices Développement architectural avancé, etc.

 CodeChinaProjet Open Source:【Grandes usines de première ligneJavaAnalyse des questions d'entrevue+Résumé de base notes d'étude+Dernière vidéo d'explication】

EtJavaPoints de connaissance de base+Ensemble complet de matériel d'apprentissage des architectes et de vidéos+Un guide d'entrevue pour les grandes entreprises de première ligne+Le modèle de CV de l'entrevue peut être obtenu+Ali meituan Netease Tencent xiaomi aiqiyi Express Bi Li Li Li question d'entrevue+SpringCollection de sources+JavaArchitecture ebook de combat réel+2021Le dernier entretien d'usine.
Ne dis pas ça.JVMSurveillance et réglage des performances,2021HuaweiJavaQuestions d'entrevue avancées et réponses,_Java_04

版权声明
本文为[Programme Jasmine]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210915060755585b.html

Scroll to Top