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

Programme Jasmine 2021-09-15 06:16:02
ne dites pas que vous


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://javamana.com/2021/09/20210915060755585b.html

  1. Vous apprendrez à construire un serveur d'applet Wechat (https) à la main
  2. 作为一名程序员我不忘初心,Java最新实习面试经验总结,
  3. 作为一名Java面试者你应该知道的,2021最新Java常用开源库总结,
  4. 作为一个程序员,你觉得最大的悲哀是什么,2021年大厂Java岗面试必问,
  5. Configuration de l'environnement Java du système win10
  6. 作為一個程序員,你覺得最大的悲哀是什麼,2021年大廠Java崗面試必問,
  7. En tant que programmeur, quelle est la plus grande tristesse que vous ressentez? L'entrevue d'emploi Java de 2021 dans une grande usine vous demandera:
  8. Comme vous devriez le savoir en tant qu'intervieweur Java, 2021 dernier résumé des bibliothèques open source couramment utilisées pour Java,
  9. En tant que programmeur, je n'oublie pas le dernier résumé de mon expérience d'entrevue de stage en Java.
  10. 作為一名Java面試者你應該知道的,2021最新Java常用開源庫總結,
  11. New feature of Java 8. Stream (). Map (general programming method: collect. Groupingby)
  12. Computer graduation project java + SSM hospital registration system
  13. 作為一名程序員我不忘初心,Java最新實習面試經驗總結,
  14. 使用Docker部署Spring-Boot项目,论程序员成长的正确姿势,
  15. Conseils pour améliorer l'efficacité du Code Java mille fois
  16. 全网首发,我在华为做Java外包的真实经历!
  17. 全套Java视频百度云,终于找到一个看得懂的JVM内存模型了,
  18. 入职3个月的Java程序员面临转正,字节跳动 京东 360 网易面试题整理,
  19. Docker tutorial series (I) introduction to docker tutorial spring cloud mybatis distributed microservice Cloud Architecture
  20. 全網首發,我在華為做Java外包的真實經曆!
  21. Lancement de l'ensemble du réseau, je fais l'expérience réelle de l'externalisation Java à Huawei!
  22. Run around with money? Li Weijia fell into the storm of endorsement! In the face of collective hot discussion, personal attitude has become the focus of attention
  23. 全套Java視頻百度雲,終於找到一個看得懂的JVM內存模型了,
  24. Un ensemble complet de vidéos Java Baidu Cloud a finalement trouvé un modèle de mémoire JVM compréhensible.
  25. Déployez le projet Spring Boot avec docker, et parlez de la bonne posture pour que les programmeurs grandissent.
  26. 关于网络优化你必须要知道的重点,GC 堆排 Tomcat 算法题,
  27. 关于电商秒杀系统中防超卖处理方案简述,Java开发热门前沿知识,
  28. Les programmeurs Java qui sont entrés dans l'entreprise pendant trois mois ont dû faire face à une correction d'échelle, et les octets ont sauté dans le traitement des questions d'entrevue de JD 360 Netease.
  29. What is the new syntax of XX ≠ null in Java?
  30. Spring scheduled task cron expression (@ scheduled)
  31. Une brève description du plan de traitement anti - surproduction dans le système d'arrêt du commerce électronique et les connaissances de pointe du développement Java.
  32. Ce que vous devez savoir sur l'optimisation du réseau, c'est que le problème de l'algorithme Tomcat de gerbage GC,
  33. 凭借这份Java面试题集,成体系化的神级Java进阶笔记,
  34. 凭借这份Java面试题集,BAT大厂面试基础题集合,
  35. Docker Knowledge point collation
  36. Redis sur la réalisation élégante des tâches retardées
  37. 憑借這份Java面試題集,BAT大廠面試基礎題集合,
  38. Avec cet ensemble de questions d'entrevue Java, l'ensemble de questions de base d'entrevue de bat,
  39. Avec cet ensemble de questions d'entrevue Java, les notes avancées Java de niveau divin sont systématisées,
  40. Opérateurs arithmétiques et opérateurs de comparaison pour JavaScript, Introduction classique au développement web
  41. MySQL + +: slow query log analysis (I)
  42. Android Architect path 21 Responsive Programming RX Java thread transformation Principles
  43. Explorer le cadre open source Android - 1. Okhttp Source Analysis
  44. 分布式宝典:限流 缓存 通讯,Java开发中常见的一些问题面试专题,
  45. 分享面试经历的网站,腾讯大牛教你自己写Java框架!
  46. Expliquer les six principes de base du modèle de conception par des exemples réels
  47. Site Web pour partager vos expériences d'entrevue, Tencent Bull vous apprend à écrire votre propre cadre Java!
  48. Dictionnaire distribué: communication de cache limitée par le courant, sujets d'entrevue pour certaines questions courantes dans le développement Java,
  49. Another uncle circle man is angry! The high-quality acting skills make people admire and achieve the highlight of the ending of spring in Jade House
  50. 10. MySQL database import, export and authorization
  51. 9. MySQL data query
  52. 8. MySQL data operation DML
  53. 7. MySQL database table engine and character set
  54. 分享面試經曆的網站,騰訊大牛教你自己寫Java框架!
  55. Les points de connaissance de Java Real - time Video Download, Byte Jumping Java R & D post ont été divulgués à l'intérieur.
  56. Introduction au JavaScript chapitre 15 (objets, clairvoyance)
  57. 前方高能,Java程序员最大的悲哀是什么?
  58. Tencent private cloud MySQL solution tdsql
  59. 前方高能,Java程序員最大的悲哀是什麼?
  60. Quelle est la plus grande tristesse des programmeurs Java à l'avenir?