Détails de la découverte du Service d'application Dubbo 3 que Xiaobai peut également comprendre

Maître insectifuge 2021-09-15 07:13:35
tails la couverte du service


Rechercher le numéro public de Wechat"Maître insectifuge",Partage de la technologie d'arrière - plan,Conception architecturale、Optimisation des performances、Lecture du code source、Dépannage、Pratique de la marche à pied.

Cet article a été inclus dans https://github.com/lkxiaolou/lkxiaolou Bienvenuestar.

dubbo Est une source ouverte RPC Cadre,Principalement:3Rôles: Fournisseurs(provider)Consommateurs(consumer)Registre(registry)

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

Enregistrer l'adresse de service au Registre lorsque le fournisseur démarre,Abonnez - vous au service au démarrage du consommateur,Et faire un appel en obtenant l'adresse du fournisseur,Lorsque l'adresse du fournisseur change,Pousser les changements aux consommateurs par l'intermédiaire du registre.C'est ça. dubbo Principaux flux de travail.

In2.7.5Avant,dubbo Seuls les modèles de découverte de service au niveau de l'interface sont pris en charge,>=2.7.5La version de offre deux modèles de découverte de service au niveau de l'interface et de l'application,3.0Les versions ultérieures du service au niveau de l'application ont révélé une fonctionnalité encore plus importante.

Cet article explique pourquoi il est nécessaire d'introduire la découverte de services au niveau de l'application,dubbo Les difficultés de mise en oeuvre de la découverte de services au niveau de l'application etdubbo3 Comment résoudre ces problèmes ces trois parties sont expliquées.

Avant de commencer,Commençons par comprendre. dubbo Qu'est - ce qu'un service au niveau de l'interface fourni à l'origine.

À quoi ressemble le service au niveau de l'interface??

dubbo La découverte de l'inscription pour le service estInterfaceEst la plus petite taille de grain,In dubbo Résumer en unURL,C'est comme ça.:

dubbo://10.1.1.123:20880/org.newboo.basic.api.MyDemoService?anyhost=true&application=ddog-my-demo&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=org.newboo.basic.api.MyDemoService&methods=setUser,getUser&owner=roshilikang&release=2.7.6&side=provider&threads=500

C'est le chaos.?Tiens bon.:

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

  • AccordAccord de représentation pour la prestation de services,Si vous êtes inscrit grpc Services,Voilà. grpc://

  • ipport Représente la machine sur laquelle le port fournit le service

  • interface Représente le nom de l'interface enregistrée,Il correspond directement au Code qui doit exposer le service interface,Comme suit:

package org.newboo.basic.api;import org.newboo.basic.model.User;public interface MyDemoService { void setUser(User user); User getUser(String uid);}
  • ParamètresReprésente certains paramètres du Service,Peut - être des métadonnées.,Ou des informations de configuration

Tu as dû le découvrir.,Un interface Peut contenir plusieurs dubbo Interface,Il y a donc quelque chose de mal à l'appeler un service au niveau de l'interface,Je crois.Découverte de services de niveau de service,Mais la définition du service est floue,Peut être confondu avec une application,Même plus tard. dubbo Les mots clés utilisés pour la découverte de services au niveau de l'application sont également service,Nous avons donc remplacé ce concept plus compréhensible de niveau d'interface par.

Le service au niveau de l'interface a trouvé un problème?

Trop de données

Qu'il s'agisse de stockage ou de changement de pression de poussée, il peut y avoir un goulot d'étranglement,Les données se manifestent principalement dans ces deux domaines:

  • Les données individuelles enregistrées sont trop grandes

C'est un problème facile à résoudre.:Démonter!

dubbo In 2.7 Les versions suivantes sont prises en chargeCentre de métadonnéesAvecCentre de configuration,PourURLLes paramètres sont classifiés pour le stockage.Persistant(Par exemple:application、methodAttendez.)Les paramètres sont stockés dans le Centre de métadonnées,Peut changer au moment de l'exécution(timeout、tag)Stockage dans le Centre de configuration

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

  • Trop de données enregistrées

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

Qu'il s'agisse d'ajouter une machine ou une interface,La croissance est linéaire,Ce problème est plus grand et plus grave qu'une seule donnée.

Lors de l'effacement des informations d'enregistrement interface Information,Cela réduit considérablement la quantité de données

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

Non - mainstream

Utilisé uniquement dubbo Les camarades de classe peuvent penser que c'est courant.

Mais du point de vue de la découverte du service:

Quel que soit le service le plus utilisé pour enregistrer le système Discovery DNS,Ou peut - être SpringCloud Système、K8S Système,Toutes les découvertes d'enregistrement de service sont faites dans la dimension application,S'aligner uniquement sur ces systèmes,Pour mieux s'y connecter.

Dans la mesure où je comprends,Actuellement, il n'y a que dubboSOFARPCHSF Trois Ali. RPC Le cadre soutient la découverte de services au niveau de l'interface.

Services au niveau de l'interface Découvrez comment utiliser

providerServices d'exposition de bout en bout:

<dubbo:registry address="zookeeper://127.0.0.1:2181"/><dubbo:service interface="org.newboo.basic.api.MyDemoService" ref="myNewbooDemoService"/>

consumerServices de référence de bout en bout:

<dubbo:registry address="zookeeper://127.0.0.1:2181"/><dubbo:reference id="myNewbooDemoService" interface="org.newboo.basic.api.MyDemoService"/>

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

Lorsque la méthode distante est appelée localement,Il suffit de configurer un reference,Et l'utiliser directement interface Pour appeler,Nous n'avons pas à le faire. interaface,dubbo Nous avons automatiquement généré un agent pour RPC Appelez,Les détails de la communication sont masqués,Allons - y.La sensation d'appeler une méthode distante comme une méthode locale,Et ça aussi. dubbo Avantages.

D'ici, nous pouvons voir pourquoi dubbo Pour concevoir une découverte de service au niveau de l'interface,Parce que pour chaque interface Générer un agent,Doit être positionné à interface Adresse de service correspondant à l'exposition de service,Pour plus de commodité,dubbo C'est tout..

Que feriez - vous si vous deviez mettre en œuvre la découverte de service au niveau de l'application?

Si je devais concevoir une découverte de service au niveau de l'application,L'inscription est inutile.,Inscrivez - vous par nom d'application.

Mais il y a un problème caché ici, c'est l'unicité du nom de l'application,Les noms d'application doivent être bien gérés,Sinon, répétez.、Toute modification arbitraire peut invalider la découverte du Service

En ce qui concerne les abonnements,À l'heure actuelle dubbo Mécanisme,Il faut dire au consommateur à quelle application appartient chaque interface consommée,Cela permet de localiser où l'interface est déployée.

Quelle est la difficulté?

Réalisation dubbo Découverte de services au niveau de l'application,La difficulté, c'est que

  • Compatibilité,En plus de la découverte de service,Réduire au minimum les autres modifications,Et compatible avec la transition du niveau de l'interface au niveau de l'application
  • Relations de déploiement de l'interface à l'application,Découverte de services au niveau de l'interface,Il n'est pas nécessaire de se soucier de l'application sur laquelle l'interface est déployée,Mais au niveau de l'application,Il faut le savoir.,Mais cela rend les développeurs plus difficiles à utiliser,Y a - t - il un plan pour protéger les détails autant que possible?

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

dubbo3 Comment résoudre ces problèmes?

Compatibilité

Conserver la découverte du service au niveau de l'interface,Et la méthode d'enregistrement double est adoptée par défaut,Quel modèle de découverte de service configurable utiliser,La configuration suivante utilise la découverte de service au niveau de l'application

<dubbo:registry address="zookeeper://127.0.0.1:2181?registry-type=service"/>

Je l'ai utilisé.serviceCe mot - clé

Comment trouver l'application correspondant à l'interface

  • Programme1:Configuration manuelle,Simple à réaliser,Structure simple,Mais les coûts d'utilisation des utilisateurs sont élevés,De cette façon dubbo3 Prise en charge
<dubbo:service services="ddog-my-demo-p0" interface="org.newboo.basic.api.MyDemoService" ref="myNewbooDemoService"/>
  • Programme2:Service introspectif

Les noms sont un peu grands.,Mais c'est simple.,Jean dubbo Fais - le toi - même.,Stocker la relation de cartographie entre l'interface et le nom de l'application lors de l'enregistrement du fournisseur,Le nom de l'application déployée est obtenu à partir du nom de l'interface lorsque le consommateur consomme,Et faire une découverte de service.

Où les données sont - elles stockées??Apparemment, le Centre de métadonnées est parfait.L'utilisateur du schéma n'est pas différent du niveau d'interface précédent,Mais il faut ajouter un centre de métadonnées,L'architecture devient complexe.

Et il y a un problème,Si l'interface est déployée sous plusieurs applications,dubbo La politique de recherche est de s'abonner à tout,Cela peut ne pas convenir à certains scénarios.

Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

Enfin

Cet article passe de la découverte de services au niveau de l'interface à la découverte de services au niveau de l'application,Contient pourquoi dubbo Conçu pour la découverte de services au niveau de l'interface,Le service au niveau de l'interface a trouvé quelque chose de douloureux?Basé sur dubbo Situation actuelle comment concevoir une découverte de service au niveau de l'application,Les services au niveau de l'application découvrent les difficultés de mise en oeuvre et répondent à des questions telles que,Je crois que le petit ami qui a fini de regarder doit avoir quelque chose à gagner.


Xiaobai peut comprendre.dubbo3Détails de la découverte du service au niveau de l'application

版权声明
本文为[Maître insectifuge]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915071141166l.html

  1. 别再说你不会JVM性能监控和调优了,2021华为Java高级面试题及答案,
  2. 15 useful cron work examples commonly used by Senior Linux system administrators
  3. Ne dites pas que vous ne pouvez pas surveiller et ajuster les performances JVM, 2021 Huawei Java Advanced interview Questions and Answers,
  4. 別再說你不會JVM性能監控和調優了,2021華為Java高級面試題及答案,
  5. 十多家大厂Java面试真题锦集干货整理,Java开发者该学习哪些东西提高竞争力?
  6. 十分钟带你回顾Spring常问的知识点,35岁老年程序员的绝地翻身之路,
  7. 区区一个SpringBoot问题就被干趴下了,看完这一篇就够了!
  8. K8s gestion des ressources (opérations de base)
  9. Java and cloud native dating
  10. 區區一個SpringBoot問題就被幹趴下了,看完這一篇就够了!
  11. Un problème de démarrage de printemps dans le district a été séché, et c'est assez!
  12. Dix minutes pour vous faire passer en revue les points de connaissance que Spring demande souvent, le chemin du retour Jedi d'un programmeur âgé de 35 ans,
  13. Plus d'une douzaine de grandes usines Java interview vrai sujet brocade collection de marchandises sèches, les développeurs Java devraient apprendre ce qui améliore la compétitivité?
  14. 十分鐘帶你回顧Spring常問的知識點,35歲老年程序員的絕地翻身之路,
  15. Guide de route d'apprentissage Java, redis a plusieurs types de données?
  16. 华为Java高级工程师面试题,字节跳动上千道精选面试题还不刷起来!
  17. 华为Java面试题目,腾讯Java开发面试记录,
  18. Propriétés et méthodes des objets Array en javascript!,Pseudo - classes et pseudo - éléments pour CSS
  19. Design pattern -- agent pattern
  20. 華為Java面試題目,騰訊Java開發面試記錄,
  21. Huawei Java interview title, Tencent Java Development interview record,
  22. Huawei Java Senior Engineer interview question, Byte Jumping thousand Selected Interview Question is still not Brushed!
  23. 双非本科字节跳动Java面试题分享,一篇文章教你搞定计算机网络面试,
  24. 又到一年金三银四,2021最新Java笔试题及答案,
  25. Huawei Finance and Economics 2021 Spring Recruitment interview, what is distributed Lock?Pourquoi utiliser des serrures distribuées?
  26. Un an plus tard, Golden, Silver, Silver, and Silver, 2021, the latest Java written Examination Questions and Answers,
  27. Partage de questions d'entrevue Java à double saut d'octets non - premier cycle, un article vous apprend à gérer l'entrevue réseau informatique,
  28. Computer graduation project java online voting system based on SSM
  29. K8s gestion des ressources (opérations de base)
  30. 又到一年金三銀四,2021最新Java筆試題及答案,
  31. Collection de code de base JavaScript (1)
  32. Vérification des permissions d'interface pour le démarrage du printemps à l'aide d'annotations personnalisées AOP +.
  33. Vérification des permissions d'interface pour le démarrage du printemps à l'aide d'annotations personnalisées AOP +.
  34. Cloud Security Daily 210914: Red Hat Jboss Middleware Platform found important Security Vulnerability and needs to be upgraded as soon as possible
  35. 吐血整理,腾讯团队实力打造spring入门教程,
  36. 史上最全的微服务专业术语面试50问,字节跳动Java岗经典面试真题,
  37. Absolument!C'est l'analyse la plus détaillée du code source de hashtap que j'ai jamais vu!
  38. Computer graduation project Java logistics order management system of logistics company based on SSM
  39. Talk about Kafka: source code analysis of producer
  40. [springboot2 starts from 0] development tips - Lombok, devtools, spring initailizr
  41. 国内一线互联网公司面试题汇总,2021年大厂Java岗面试必问,
  42. 啃完吃透保你涨薪5K,熬夜整理小米Java面试题,
  43. 和字节跳动大佬的技术面谈,Redis成神之路电子版教程已问世,
  44. Le terme professionnel le plus complet de l'histoire des micro - services interview 50 questions, Byte Jumping Java post Classic interview vrai problème,
  45. After using mybatisplus, I haven't written SQL for a long time
  46. [springboot2 starts from 0] how to write a springboot application?
  47. Huawei cloud guassdb (for redis) released a new version, and the two core features were officially unveiled
  48. 和字節跳動大佬的技術面談,Redis成神之路電子版教程已問世,
  49. 啃完吃透保你漲薪5K,熬夜整理小米Java面試題,
  50. Avec l'interview technique du gigolo, le tutoriel électronique redis est sorti.
  51. Après avoir mangé, assurez - vous d'augmenter votre salaire de 5K et de rester debout tard pour trier les questions d'entrevue Java de millet.
  52. Résumé des questions d'entrevue pour les entreprises Internet nationales de première ligne, qui doivent être posées lors de l'entrevue d'emploi Java de la grande usine en 2021,
  53. Le tri des crachats de sang, la force de l'équipe Tencent pour créer le tutoriel d'introduction au printemps,
  54. Java and scala concurrency Fundamentals
  55. Analysis of java thread source code based on Hotspot
  56. 國內一線互聯網公司面試題匯總,2021年大廠Java崗面試必問,
  57. Introduction au module de contrôle de Connexion MySQL
  58. 大厂高级测试面试题,Java面试基础技能罗列,
  59. Comprendre l'architecture sous - jacente d'InnoDB en exécutant une instruction
  60. Chargeur de classe 1 Tomcat