Vorwort
Mit der Entwicklung des Internets wurde das Ausmaß der Website -Anwendungen kontinuierlich erweitert, und herkömmliche vertikale Anwendungsarchitekturen können nicht mehr damit fertig werden. Verteilte Servicearchitektur und mobile Computerarchitektur sind unerlässlich. Dubbo ist ein verteilter Service -Rahmen, der in diesem Fall geboren wurde. Jetzt wird das Kerngeschäft als unabhängiger Service extrahiert, so dass Front-End-Anwendungen schneller und stabil reagieren können.
Was ist Dubbo
Dubbo ist Alibabas Open Source Distributed Service Framework. Das größte Merkmal ist, dass es auf geschichtete Weise strukturiert ist. Diese Methode kann zwischen den Schichten entkoppeln (oder lose Kopplung maximieren). Aus Sicht des Service -Modells nimmt Dubbo ein sehr einfaches Modell an, entweder der Anbieter bietet Dienstleistungen oder der Verbraucher konsumiert Dienstleistungen. Daher können wir basierend auf diesem Punkt die beiden Rollen des Dienstleisters und des Serviceverbrauchers abstrahieren. Über das Registrierungszentrum, den Unterhalt der Einigung, die Serviceüberwachung und andere Inhalte
Was kann Dubbo tun
Wenn die Website größer wird, ist es unvermeidlich, dass die Anwendung geteilt und gewartet wird (Microservices), um die Entwicklungseffizienz zu verbessern, die Leistung zu optimieren, wettbewerbsfähige Ressourcen zu sparen usw.
Mit immer mehr Diensten wird die URL -Adresse des Dienstes explodieren, das Konfigurationsmanagement wird sehr schwierig und der Einzelpunktdruck des F5 -Hardware -Lastausgleichs wird immer größer.
Bei der weiteren Entwicklung werden die Abhängigkeiten zwischen den Dienstleistungen kompliziert und können sogar nicht feststellen, welche Anwendung vor welcher Anwendung gestartet wird. Architekten können die architektonische Beziehung der Anwendung nicht vollständig beschreiben.
Anschließend wird die Anzahl der Dienstleistungen immer größer und das Problem der Servicekapazität wird aufgedeckt. Wie viel Maschinenunterstützung benötigt dieser Service? Wann sollte ich die Maschine hinzufügen? usw……
Bei der Begegnung dieser Probleme können Sie Dubbo verwenden, um sie zu lösen.
Was ich dieses Mal mit Ihnen teile, ist die anfängliche Konfiguration der Dubbo Framework -Anwendung und die Verwendung des Zookeeper -Registrierungszentrums. Wenn es um das Registrierungszentrum geht, gibt es nur zwei Arten von Dingen, die ich verwendet habe: Zookeeper und Eureka. Ich benutze ZK mit Dubbo und Eureka mit SpringCloud. Daher werde ich später einige Kapitel über Microservices mit Ihnen teilen, in der Hoffnung, dass es Ihnen hilfreich ist.
Installieren Sie das Registrierungszentrum Zookeeper
Dubbo Framework Anbieter und Verbraucher
Dubbo-Admin-Bereitstellung
Installieren Sie das Registrierungszentrum Zookeeper
Zunächst müssen wir die Zookeeper -Download -Adresse online durchsuchen. Ich bin auf dem Linux-System, also haben wir das Zookeeper-3.3.6.tar.gz-Paket heruntergeladen und es über Tar-Zxvf Zookeeper-3.3.6.tar.gz entpackt. Es ist zu beachten, dass die Konfigurationsdateien im allgemeinen Paket die Standard -Beispielversion sind und der Name der Standardkonfigurationsdatei von Zookeeper nur zoo.cfg ist. Um den Dateinamen nicht jedes Mal anzugeben, müssen wir eine Konfigurationsdatei mit dem Namen zoo.cfg im Conf -Verzeichnis erstellen. Der Dateiinhalt kann von zoo_sample.cfg kopiert oder die Datei umbenennen. Der Inhalt lautet wie folgt Vim Zoo.cfg:
# Die Anzahl der Millionen Sekunden jedes TicktickTime = 2000 #heartbeat Frequenz # Die Anzahl der Zecken, die die anfängliche Synchronisierungsphase übernehmen kann. Port, an dem die Clients clientPort = 2081 #Zookeeper externer Port ConnectclientPort sind
Ich werde die Parameterinformationen hier nicht ändern und die Standardeinstellung verwenden. Stellen Sie kurz mehrere häufig verwendete Befehle zum Bearbeiten von Dateiinhalten unter Linux ein:
vim zoo.cfg: Dateiinhalt anzeigen
Einfügen: Führen Sie den Befehl einfügen aus
ESC: Stornieren Sie den Befehl und drücken Sie: F: F: Beenden ,: WQ: Speichern und Beenden
Wenn wir Zoo.cfg haben, müssen wir nur sein Bin -Verzeichnis eingeben, um die ZkServer.sh -Datei zu finden und das Zookeeper Registration Center zu starten, indem Sie den Befehl ./zkServer.sh Start ausführen. Die normale Startaufforderung lautet wie folgt:
Normalerweise befindet sich Zookeeper auf einem separaten Server als Registrierungszentrum, und das Programm (hier bezieht sich auf meinen lokalen), muss ein anderes Registrierungszentrum anrufen. Darüber hinaus muss das Registrierungszentrum prüfen, ob der offene Hafen von Zookeeper verbunden werden kann. Mein Lokal ist Windows 10, sodass Sie den Port nicht über den Zookeeper -Client überprüfen müssen. Sie müssen nur Telnet IP 2081 verwenden, um festzustellen, ob der Port geöffnet ist.
Dubbo Framework Anbieter und Verbraucher
Zunächst müssen wir aus Gründen der Einschätzung eine einheitliche Schnittstelle definieren, die die vom Unternehmen extrahierte öffentliche Schnittstelle ist. Wir verpacken diese Schnittstelle separat in ein Modul. Hier ist Dubbo_API. Wir definieren die folgende Schnittstelle in diesem Modul:
public interface userservice {list <mouser> getUsers (); }Erstellen Sie dann ein Anbietermodul, das vom Dubbo_API -Modul abhängt und die Benutzerservice -Schnittstelle implementiert, der Code ist wie folgt:
öffentliche Klasse UserServiceImpl implementiert UserService {@Value ("$ {Server.port}") private int port; / ** * @return */ @Override publiclist <mouser> getUsers () {list <Mouser> list = new ArrayList <> (); für (int i = 0; i <5; i ++) {Mouser user = new Mouser (); user.setusername ("shenniu" + i); user.setUserPWD ("Port:" + port); list.add (Benutzer); } Rückgabeliste; }}Als Dienstanbieter müssen Sie zuerst das Dubbo Framework verwenden, um Dubbo vorzustellen und dann eine gewisse Konfiguration durchzuführen. Zunächst müssen wir Dubbo -Abhängigkeiten über Maven im Dubbo_Provider -Modul vorstellen. Zookeeper wird im Registrierungszentrum verwendet, daher müssen wir auch entsprechende Abhängigkeiten über Maven einführen:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.example</groupId> <artifactId> Dubbo_API </artifactId> <version> 0.0.1-Snapshot </Version> </abhängig>
Nach Abschluss der Abhängigkeit besteht der Rest darin, den Anbieter von Dubbo zu konfigurieren, die Konfigurationsdatei von Ressourcen/Dubbo-conf/server.xml und den Dateiinhalt zu erstellen:
<? xmlns: Dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/beans http:/www.springframework http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-Anbietername-> <Dubbo: Anwendungsname =" Demo-Provider "/> <!-Service-Adresse des Zookeper-Zentrums für Zookeper-Zentrum-Registry-Registry-Protokoll" Protokoll ". adress = "192.168.168.168:2081" /> <!-Verwenden Sie das Dubbo-Protokoll, um den Dienst auf Port 20880, Protokollkommunikationsport-zu enthüllen-> <Dubbo: Protokoll name = "Dubbo" pORT = "20880" /> <!-Benutzerservice-Schnittstelle-> <Dubbo: Service Interface = "Service". Implementierung-> <Bean ID = "UserService"/> </beans>
Fügen Sie Ressourcenimport @Importresource ("ClassPath: Dubbo-Conf/*. XML") im Dubboproviderapplication-Portal hinzu, und unser Dienstanbieter ist hier abgeschlossen. Überprüfen Sie das Startprotokoll:
Es gibt keine Ausnahme, wenn der Dienstanbieter beginnt. Schauen wir uns den Anrufer an, um ein Modul von Dubbo_Consumer zu erstellen und die Modulabhängigkeiten der öffentlichen Schnittstelle von Dubbo_API vorzustellen, dann einen UserController zu erstellen und eine GET -Benutzeroberfläche aufzudecken:
@RestControllerPublic Class UserController {@autowired Private UserService UserService; @GetMapping ("/user") publiclist <mouser> getUsers () {return userService.getUsers (); }}Der Benutzerservice hier ist die Injektion der öffentlichen Schnittstelle. Nach Abschluss der Codierung führt die Verbraucherseite Dubbo- und Zookeeper -Abhängigkeiten vor:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <gruppe> com.alibaba </Groupid> <artifactId> Dubbo </artifactId> <version> 2.5.3 </Version> <ausschlüsse> <Exclusion> <gruppe> org.springFramework </Groupid> <artifactID> Spring </artifactID> </excrusion> </exclusions> </abhängig> </abhängig> </abhängig> </abhängig> </abhängig> </abhängig> </abhängig
Wir erstellen auch eine Konfigurationsdatei mit den Namensressourcen/Dubbo-conf/client.xml und stellen diese Ressource in den Anwendungseintrag ein:
@Importresource ("ClassPath: Dubbo-conf/*. Xml")@SpringbootApplicationPublic Class DubboconsumerApplication {public static void main (String [] args) {Springapplication.run (DubboconsumerApplication.Class, Args, Args); }}Der Konfigurationsinhalt von client.xml lautet wie folgt:
<? xmlns: Dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/beans http:/www.springframework http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- Service name--> <dubbo:application name="demo-consumer" /> <!-- zookeeper registration center exposes service address--> <dubbo:registry protocol="zookeeper" Adresse = "192.168.168.168:2081" /> <!-Benutzerservice-Schnittstelle-> <Dubbo: Referenz-ID = "UserService" interface = "service.userService" /> < /beans>
Zu diesem Zeitpunkt werden ein einfacher Dienstanbieter, eine Serviceanruferkonfiguration und -codierung abgeschlossen, und die 3 Module sind wie folgt:
Dann starten Sie den Anbieter und den Verbraucher. Fordern Sie dann die Schnittstelle über die vom Verbraucher freigelegte Controller -Schnittstelle an. Meine Adresse hier lautet http: // localhost: 8082/user:
Der Effekt ist, dass der Verbraucher das von Anbieter über die injizierte UserService Interface Call getusers () zurückgegebene Ergebnis erhält, was auch bedeutet, dass die einfache Verwendung des Dubbo -Frameworks als erfolgreich angesehen wurde.
Dubbo-Admin-Bereitstellung
Als beliebter RPC-Framework hat Dubbo dieses Open-Source-Überwachungstool Dubbo-Admin. Ich muss sagen, dass das im Internet bereitgestellte WAR-Paket in Dubbo-admin.war entweder nicht verwendet werden kann oder CSSDN-Punkte zum Herunterladen benötigt. Es gibt viele Versionen und es ist etwas schwierig. Gehen Sie entschlossen zu Git, um den Quellcode zu ziehen und ihn selbst zu verpacken. Die Git-Adresse lautet: https://github.com/apache/incubator-dubbo-ops. Nachdem wir es heruntergezogen haben, müssen wir nur auf das Dubbo-Admin-Projekt achten, und andere Dinge können vorerst ignoriert werden. Nach dem Öffnen des Projekts müssen wir nur die folgende Screenshot -Konfiguration ändern (Sie können auch die verpackte Konfigurationsdatei ändern):
#Zookeeper Konfigurationsadresse und Port Dubbo.registry.address = zookeeper: //127.0.0.1: 2081#Backend Login Passwort Dubbo.admin.root.Password = rootDubbo.admin.guest.password = Gast
Nachdem Sie das Paket ausgeführt haben, können Sie den Namen erhalten: Dubbo-Admin-2.0.0.war-Paket, dann in Tomcat und stöbern Sie durch den Browser. Das Konto und das Passwort sind beide root; Nachdem Sie sich angemeldet haben, können Sie den Anbieter und Verbraucher sehen, den wir zuvor begonnen haben. Dies ist die Benutzeroberfläche des Dubbo-Admin-Überwachungs-Registrierungszentrums. Sie können direkt auf diese Dienste klicken. Wenn Sie nicht viel sagen, probieren Sie es selbst aus.
GIT -Adresse: https://github.com/shenniuboxing3 Nuget Publishing -Paket: https://www.nuget.org/profiles/shenniuboxing3
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.