Préface
Avec le développement d'Internet, l'ampleur des applications de site Web a été continuellement élargie et les architectures d'applications verticales conventionnelles ne peuvent plus y faire face. L'architecture de service distribuée et l'architecture informatique mobile sont impératives. Dubbo est un cadre de service distribué, né dans ce cas. Désormais, l'entreprise principale est extraite en tant que service indépendant, afin que les applications frontales puissent répondre plus rapidement et de manière stable.
Qu'est-ce que Dubbo
Dubbo est le cadre de service distribué open source d'Alibaba. Sa plus grande caractéristique est qu'elle est structurée de manière en couches. Cette méthode peut se découpler (ou maximiser le couplage lâche) entre les couches. Du point de vue du modèle de service, Dubbo adopte un modèle très simple, soit le fournisseur fournit des services, soit les services de consommation consommées. Par conséquent, sur la base de ce point, nous pouvons résumer les deux rôles du fournisseur de services et du consommateur de services. À propos du centre d'enregistrement, de la prise en charge de l'accord, de la surveillance des services et d'autres contenus
Que peut faire Dubbo
Lorsque le site Web devient plus grand, il est inévitable que l'application soit divisée et entretenue (microservices) sera nécessaire pour améliorer l'efficacité du développement, optimiser les performances, enregistrer des ressources concurrentielles clés, etc.
À mesure que de plus en plus de services, les informations d'adresse URL du service exploseront, la gestion de la configuration devient très difficile et la pression à point unique de l'équilibateur de charge matérielle F5 devient de plus en plus.
Lors du développement plus approfondi, les dépendances interinstitudes deviennent compliquées et ne peuvent même pas dire quelle application est lancée avant quelle application, les architectes ne peuvent pas entièrement décrire la relation architecturale de l'application.
Ensuite, le nombre d'appels de services devient de plus en plus élevé, et le problème de la capacité de service est exposé. Quelle est la prise en charge de la machine ce service nécessite-t-il? Quand dois-je ajouter la machine? etc……
Lorsque vous rencontrez ces problèmes, vous pouvez utiliser Dubbo pour les résoudre.
Ce que je partage avec vous cette fois, c'est la configuration initiale de l'application Dubbo Framework et l'utilisation du centre d'enregistrement ZooKeeper; En ce qui concerne le centre d'inscription, il n'y a que deux types de choses que j'ai utilisées: Zookeeper et Eureka. J'utilise ZK avec Dubbo et Eureka avec SpringCloud. Par conséquent, je partagerai avec vous quelques chapitres sur les microservices plus tard, en espérant que cela vous sera utile.
Installez le Zookeeper du centre d'inscription
Fournisseur de framework Dubbo et consommateur
Déploiement de Dubbo-Admin
Installez le Zookeeper du centre d'inscription
Tout d'abord, nous devons rechercher l'adresse de téléchargement de Zookeeper en ligne. Je suis sur le système Linux, nous avons donc téléchargé le package Zookeeper-3.3.6.tar.gz et l'avons dézippé via TAR -ZXVF ZOOKEET-3.3.6.tar.gz. Il convient de noter que les fichiers de configuration du package général sont l'exemple de version par défaut, et le nom de fichier de configuration par défaut de ZooKeeper n'est que zoo.cfg. Afin de ne pas spécifier le nom de fichier à chaque fois, nous devons créer un fichier de configuration nommé zoo.cfg dans le répertoire conf. Le contenu du fichier peut être copié à partir de zoo_sample.cfg ou renommer le fichier. Le contenu est le suivant Vim Zoo.cfg:
# Le nombre de millions de secondes de chaque billeTicktime = 2000 #heartbeat fréquence # Le nombre de tiques que la phase initiale # de synchronisation peut prendre en # envoyant une demande et obtenant un accusation de réception symbimit = 5 # le répertoire où le snapshot est stocké au portadir = / tmp / zookeaip Les clients connectClientport = 2081 #zookeeper Port externe
Je ne modifierai pas les informations des paramètres ici et j'utiliserai la valeur par défaut; Introduisez brièvement plusieurs commandes couramment utilisées sur la façon de modifier le contenu du fichier dans Linux:
vim zoo.cfg: afficher le contenu du fichier
Insérer: exécuter la commande insert
ESC: Annulez la commande, puis appuyez sur: Q: Sortez ,: WQ: Enregistrez et sortez
Lorsque nous avons zoo.cfg, nous n'avons qu'à saisir son répertoire bin pour trouver le fichier zkserver.sh et démarrer le centre d'enregistrement ZooKeeper en exécutant la commande ./zkserver.sh start. L'invite de démarrage normale est la suivante:
Habituellement, Zookeeper est sur un serveur séparé en tant que centre d'inscription, et le programme (ici fait référence à mon local) doit appeler un autre centre d'enregistrement. De plus, le centre d'enregistrement doit vérifier si le port ouvert de Zookeeper peut être connecté. Mon local est Windows 10, vous n'avez donc pas besoin de vérifier le port via le client Zookeeper. Il vous suffit d'utiliser Telnet IP 2081 pour détecter si le port est ouvert;
Fournisseur de framework Dubbo et consommateur
Tout d'abord, pour plus de commodité, nous devons définir une interface unifiée, qui est l'interface publique extraite par l'entreprise. Nous emballons cette interface séparément dans un module. Voici Dubbo_API. Nous définissons l'interface suivante dans ce module:
Interface publique UserService {List <Mouser> getUsers (); }Ensuite, créez un module de fournisseur, qui dépend du module Dubbo_API et implémente l'interface de service utilisateur, le code est le suivant:
classe publique UserServiceIMPL implémente UserService {@Value ("$ {server.port}") Private int port; / ** * @return * / @Override public List <Mouser> getUsers () {list <mouser> list = new ArrayList <> (); pour (int i = 0; i <5; i ++) {Mouser User = new Mouser (); user.setUsername ("Shenniu" + i); user.setUserPwd ("port:" + port); list.add (utilisateur); } Retour List; }}En tant que fournisseur de services, pour utiliser le framework Dubbo, vous devez d'abord introduire Dubbo, puis faire une configuration. Tout d'abord, nous devons introduire des dépendances du Dubbo via Maven dans le module Dubbo_Provider. Zookeeper est utilisé dans le centre d'enregistrement, nous devons donc également introduire des dépendances correspondantes via Maven:
<dependency> <proupId> org.apache.zookeeper </prôdId> <Ertifactid> ZooKeeper </Retifactid> <DersonDe> 3.4.8 </ Version> </ Dependency> <Dedency> <ProupId> com.101tec </prouprid> <aRTIFACTID> ZKCLIENT </RIFACTIDA> <GroupId> com.alibaba </proupId> <Artifactid> dubbo </lefactive> <version> 2.5.3 </DERNIFRIMINE> <cussions> <cchusion> </proupId> org.springframework </proupId> <eRtifactid> Spring </ artifactid> </cchusion> </cclusions> </predency> <ArtefactId> Dubbo_API </Retifactid> <DERVIÈRE> 0.0.1-Snapshot </DERNIERSE> </DENDENCENCE>
Après avoir terminé la dépendance, le reste consiste à configurer le fournisseur de Dubbo, à créer le fichier de configuration de Resources / Dubbo-Conf / Server.xml et le contenu du fichier:
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springretsdarsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <! - Nom du fournisseur -> <dubbo: application name =" Demo-Provider "/> <! Adresse = "192.168.168.168:2081" /> <! - Utilisez le protocole Dubbo pour exposer le service sur le port 20880, Portocol Communication Port -> <Dubbo: Protocol Name = "Dubbo" port = "20880" /> <! Implémentation -> <bean id = "userService" /> </bans>
Ajoutez Resource Import @importResource ("ClassPath: Dubbo-Conf / *. XML") dans le portail DubboproviderApplication, et notre fournisseur de services est terminé ici. Vérifiez le journal de démarrage:
Il n'y a pas d'exception au début du fournisseur de services. Regardons l'appelant pour créer un module de Dubbo_Consumer, et introduisons également les dépendances du module de l'interface publique Dubbo_API, puis créez un UserController et exposons une interface utilisateur: Get User:
@RestControllerPublic Class UserController {@Autowired Private UserService UserService; @GetMapping ("/ Users") public List <Mouser> getUsers () {return userService.getUsers (); }}Le service d'utilisateur ici est l'injection de l'interface publique; Une fois le codage terminé, le côté consommateur présente les dépendances de Dubbo et Zookeeper:
<dependency> <proupId> org.apache.zookeeper </prôdId> <Ertifactid> ZooKeeper </Retifactid> <DersonDe> 3.4.8 </ Version> </ Dependency> <Dedency> <ProupId> com.101tec </prouprid> <aRTIFACTID> ZKCLIENT </RIFACTIDA> <GroupId> com.alibaba </prôdId> <Artifactid> dubbo </lefactId> <DERVIÈRE> 2.5.3 </DERNIFRATION> <CARCHEDS> <CURSUSION> <GROUPID> ORG.SPRINGFRAMEWORD </rolsid> <eRtifActid> Spring </ Artifactid> </clusion> </cclusions> </Depending>
Nous créons également un fichier de configuration avec le nom Resources / Dubbo-Conf / Client.xml et introduisons cette ressource dans l'entrée de l'application:
@Importresource ("classPath: Dubbo-Conf / *. Xml") @ SpringbootApplicationPublic classe DubboconsumerApplication {public static void Main (String [] args) {SpringApplication.Run (DubboconSumerApplication.class, args); }}Le contenu de configuration de client.xml est le suivant:
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springretsdarsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <! - Nom du service -> <dubbo: application name =" Demo-Consumer "/> <! Adresse = "192.168.168.168:2081" /> <! - Interface de service utilisateur -> <dubbo: id de référence = "userService" interface = "service.UserService" /> </ Beans>
À l'heure actuelle, un fournisseur de services simples, une configuration et un encodage de l'appelant de service sont terminés, et les 3 modules sont les suivants:
Démarrez ensuite respectivement le fournisseur et le consommateur; Demandez ensuite l'interface via l'interface de contrôleur exposée par le consommateur. Mon adresse ici est http: // localhost: 8082 / utilisateurs:
L'effet est que le consommateur obtient le résultat renvoyé par le fournisseur via l'interface d'interface d'interface injectée GetUsers (), ce qui signifie également que l'utilisation simple du framework Dubbo a été considérée comme réussie.
Déploiement de Dubbo-Admin
En tant que Framework RPC populaire, Dubbo a cet outil de surveillance open source Dubbo-Admin. Je dois dire que le package Dubbo-admin.war qui est prêt sur Internet ne peut pas être utilisé maintenant ou a besoin de points CSSDN à télécharger. Il existe de nombreuses versions et c'est un peu délicat. Allez de manière décisive à Git pour tirer le code source et l'emballer vous-même. L'adresse git est: https://github.com/apache/incubator-dubbo-ops. Après l'avoir abaissé, nous n'avons qu'à prêter attention au projet Dubbo-Admin, et d'autres choses peuvent être ignorées pour le moment; Après avoir ouvert le projet, nous devons seulement modifier la configuration de capture d'écran suivante (vous pouvez également modifier le fichier de configuration de l'emballage):
#zookeeper Configuration Adresse et port dubbo.registry.address = zookeeper: //127.0.0.1: 2081 # Backend Login Password Dubbo.admin.root.password = rootdubbo.admin.guest.password = invité
Après avoir exécuté le package, vous pouvez obtenir le nom: Dubbo-admin-2.0.0.war package, puis le mettre dans Tomcat et parcourir le navigateur. Le compte et le mot de passe sont tous deux root; Après vous être connecté, vous pouvez voir le fournisseur et le consommateur que nous avons commencé auparavant. Il s'agit de l'interface du service du centre d'enregistrement de surveillance de Dubbo-Admin. Vous pouvez cliquer directement sur ces services. Si vous ne dites pas grand-chose, essayez-le vous-même.
Adresse GIT: https://github.com/shenniuboxing3 Nuget Publishing Package: https://www.nuget.org/profiles/shenniuboxing3
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.