Dubbo-Erste-Starter-Reihe: Entwickeln von Microservice-Anwendungen basierend auf der Dubbo-API

Ziel

Entwickeln Sie Microservices auf Basis von Dubbo von Grund auf

Schwierigkeit

Niedrig

Umweltanforderungen

  • System: Windows, Linux, MacOS

  • JDK 8 und höher (JDK17 wird empfohlen)

  • Git

  • IntelliJ-IDEE (optional)

  • Docker (optional)

Hände

In diesem Kapitel erfahren Sie anhand von Schritt-für-Schritt-Anleitungen, wie Sie eine Microservice-Anwendung von Grund auf entwickeln.

1. Starten Sie das Registrierungscenter

Für eine Microservice-basierte Anwendung ist das Registrierungscenter eine unverzichtbare Komponente. Nur über das Registrierungszentrum kann der Verbraucher die Adressinformationen des Servers erfolgreich ermitteln und dann einen Anruf tätigen.

Um den Einstieg in dieses Tutorial zu erleichtern, stellen wir einen einfachen Starter auf Basis des Apache Zookeeper-Registrierungscenters zur Verfügung. Wenn Sie das Registrierungscenter in einer Produktionsumgebung bereitstellen müssen, lesen Sie bitte den Artikel Initialisierung der Produktionsumgebung, um eine hochverfügbare Registrierung bereitzustellen Center .

Windows:
git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
cd dubbo-samples
./mvnw.cmd clean compile exec:java -pl tools/embedded-zookeeper

Linux / MacOS:
git clone --depth=1 --branch master [email protected]:apache/dubbo-samples.git
cd dubbo-samples
./mvnw clean compile exec:java -pl tools/embedded-zookeeper

Docker:
docker run --name some-zookeeper --restart always -d zookeeper

2. Projekt initialisieren

Ab diesem Abschnitt wird das Projekt auf Basis von IntelliJ IDEA erstellt und getestet.

Wie im Bild oben gezeigt, kann ein Basisprojekt erstellt werden.

Nach der Initialisierung des Projekts müssen Sie , und drei Pakete im Verzeichnis src/main/javaerstellen .org.apache.dubbo.samples.apiorg.apache.dubbo.samples.clientorg.apache.dubbo.samples.provider

Später erstellen wir die entsprechende Schnittstelle apiunter , clienterstellen die entsprechende Client-Abonnementdienstfunktion unter und erstellen die entsprechende Serverimplementierung und veröffentlichen die Dienstfunktion providerunter .

Die oben genannten drei Pakete entsprechen jeweils den APIs, von denen Anwendungen abhängen, den Modulen von Verbraucheranwendungen und den Modulen von Serveranwendungen. Bei der tatsächlichen Bereitstellung muss es in drei Projekte aufgeteilt werden, wobei der Verbraucher und der Dienst vom API-Modul abhängig sind. Ausgehend von der Einfachheit wird dieses Tutorial im selben Projekt entwickelt und zwischen mehreren Startup-Klassen unterschieden.

3. Fügen Sie Maven-Abhängigkeiten hinzu

Nach der Initialisierung des Projekts müssen wir zunächst Dubbo-bezogene Maven-Abhängigkeiten hinzufügen.

Bearbeiten Sie pom.xmldiese Datei und fügen Sie die folgende Konfiguration hinzu.

    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>3.2.0-beta.4</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-x-discovery</artifactId>
            <version>4.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.8.0</version>
            <exclusions>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-handler</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-transport-native-epoll</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

In dieser Konfiguration werden die Abhängigkeiten von Dubbo und Zookeeper (und dem entsprechenden Connector Curator) definiert.

Nachdem Sie die obige Konfiguration hinzugefügt haben, können Sie Maven - Reload All Maven ProjectsAbhängigkeiten über IDEA aktualisieren.

4. Serviceschnittstelle definieren

Die Serviceschnittstelle Dubbo ist die Brücke zwischen dem Verbraucher und dem Server.

org.apache.dubbo.samples.apiErstellen Sie eine Schnittstelle unter GreetingsServiceund definieren Sie sie wie folgt:

package org.apache.dubbo.samples.api;

public interface GreetingsService {

    String sayHi(String name);
}

In ist diese Methode GreetingsServicedefiniert . sayHiNachfolgende vom Server veröffentlichte Dienste und vom Verbraucher abonnierte Dienste konzentrieren sich alle auf GreetingsServicedie Schnittstelle.

5. Definieren Sie die Serverimplementierung

Nachdem Sie die Serviceschnittstelle definiert haben, können Sie die entsprechende Implementierung auf der Serverseite definieren. Dieser Teil der Implementierung ist im Vergleich zur Verbraucherseite eine Remote-Implementierung und es gibt lokal keine relevanten Informationen.

org.apache.dubbo.samples.providerErstellen Sie eine Klasse unter GreetingsServiceImplund definieren Sie sie wie folgt:

package org.apache.dubbo.samples.provider;

import org.apache.dubbo.samples.api.GreetingsService;

public class GreetingsServiceImpl implements GreetingsService {
    @Override
    public String sayHi(String name) {
        return "hi, " + name;
    }
}

In GreetingsServiceImplwird die Schnittstelle implementiert GreetingsService, für die sayHidie Methode zurückgibt hi, name.

6. Server-Veröffentlichungsdienst

Nach der Implementierung des Dienstes wird in diesem Abschnitt der Dienst über die Dubbo-API im Netzwerk veröffentlicht.

org.apache.dubbo.samples.providerErstellen Sie eine Klasse unter Applicationund definieren Sie sie wie folgt:

package org.apache.dubbo.samples.provider;

import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.samples.api.GreetingsService;

public class Application {
    public static void main(String[] args) {
        // 定义具体的服务
        ServiceConfig<GreetingsService> service = new ServiceConfig<>();
        service.setInterface(GreetingsService.class);
        service.setRef(new GreetingsServiceImpl());

        // 启动 Dubbo
        DubboBootstrap.getInstance()
                .application("first-dubbo-provider")
                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
                .protocol(new ProtocolConfig("dubbo", -1))
                .service(service)
                .start()
                .await();
    }
}

org.apache.dubbo.samples.provider.ApplicationEs werden zwei Teile der Funktionen ausgeführt: Erstens basiert es auf der ServiceConfigDefinition veröffentlichter Dienstinformationen, einschließlich Schnittstelleninformationen und entsprechender Implementierungsklassenobjekte; zweitens konfiguriert es den Dubbo-Launcher und übergibt den Anwendungsnamen, die Adresse des Registrierungscenters und das Protokoll Informationen und Serviceinformationen usw.

Hinweis: in DubboBootstrap registryund kann mehrfach übergeben werden protocol.service

7. Der Verbraucher abonniert und ruft an

Für die Verbraucherseite kann das Verbraucherabonnement über die API von Dubbo durchgeführt werden.

org.apache.dubbo.samples.clientErstellen Sie eine Klasse unter Applicationund definieren Sie sie wie folgt:

package org.apache.dubbo.samples.client;

import java.io.IOException;

import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.samples.api.GreetingsService;

public class Application {
    public static void main(String[] args) throws IOException {
        ReferenceConfig<GreetingsService> reference = new ReferenceConfig<>();
        reference.setInterface(GreetingsService.class);

        DubboBootstrap.getInstance()
                .application("first-dubbo-consumer")
                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
                .reference(reference);

        GreetingsService service = reference.get();
        String message = service.sayHi("dubbo");
        System.out.println("Receive result ======> " + message);
        System.in.read();
    }
}

org.apache.dubbo.samples.client.ApplicationDrei Teile von Funktionen werden ausgeführt in :

Zunächst ReferenceConfigwerden die Abonnementdienstinformationen basierend auf definiert, einschließlich Schnittstelleninformationen.

Der zweite Schritt besteht darin, den Dubbo-Launcher zu konfigurieren und dabei den Anwendungsnamen, die Adresse des Registrierungszentrums, Protokollinformationen, Serviceinformationen usw. einzugeben.

Schließlich wird das Objekt des dynamischen Proxys abgerufen und aufgerufen.

Hinweis: DubboBootstrap unterstützt serviceund referencekann gleichzeitig übergeben werden, was bedeutet, dass eine Anwendung gleichzeitig Verbraucher und Server sein kann.

8. Starten Sie die Anwendung

Ab Schritt 7 ist der Code entwickelt. In diesem Abschnitt wird das gesamte Projekt gestartet und überprüft.

Der erste Schritt besteht darin, zu starten org.apache.dubbo.samples.provider.Application. Nach einer Weile wird das unten gezeigte Protokoll ( DubboBootstrap awaiting) angezeigt, was bedeutet, dass der Dienstanbieter gestartet wurde, was darauf hinweist, dass der Dienstanbieter Dienste für die Außenwelt bereitstellen kann.

[DUBBO] DubboBootstrap awaiting ..., dubbo version: 3.2.0-beta.4, current host: 169.254.44.42

Starten Sie dann org.apache.dubbo.samples.client.Application, warten Sie eine Weile und das in der folgenden Abbildung gezeigte Protokoll wird angezeigt ( hi, dubbo), was bedeutet, dass der Dienstverbraucher gestartet wurde und der Anruf an den Server erfolgreich empfangen wurde.

Receive result ======> hi, dubbo

Weiterführende Literatur

1. Einführung in die Dubbo-Konfiguration

Die Hauptkonfigurationseinträge von Dubbo sind ReferenceConfig, ServiceConfigund DubboBootstrap. Weitere Einzelheiten finden Sie im Artikel API-Konfiguration | Apache Dubbo .

2. Andere Verwendungsmethoden neben der API-Methode

Neben der API-Methode unterstützt Dubbo auch Spring XML, Annotation, Spring Boot und andere Konfigurationsmethoden. Im nächsten Tutorial erklären wir, wie Sie mit der Spring Boot-Konfigurationsmethode eine schnelle Entwicklung durchführen.

Einzelheiten zu XML und Annotation finden Sie unter XML-Konfiguration | Apache Dubbo und Annotation-Konfiguration | Fragen zu Apache Dubbo .

Mehr

In diesem Tutorial erfahren Sie, wie Sie eine Microservice-Anwendung basierend auf der reinen API von Dubbo entwickeln. Im nächsten Tutorial stellen wir vor, wie man ein Microservice-Projekt auf Basis von Spring Boot entwickelt.

Fühlen Sie sich frei , Dubbo unter https://github.com/apache/dubbo zu spielen.

Microsoft startet neue „Windows App“ .NET 8 offiziell GA, die neueste LTS-Version Xiaomi gab offiziell bekannt, dass Xiaomi Vela vollständig Open Source ist und der zugrunde liegende Kernel NuttX Alibaba Cloud 11.12 ist. Die Ursache des Fehlers wurde offengelegt: Access Key Service (Access Schlüssel) Ausnahme Vite 5 offiziell veröffentlichter GitHub-Bericht: TypeScript ersetzt Java und wird zur drittbeliebtesten Sprache. Bietet eine Belohnung von Hunderttausenden Dollar für das Umschreiben von Prettier in Rust. Den Open-Source-Autor fragen: „Ist das Projekt noch am Leben?“ Sehr unhöflich und respektloses Bytedance: Verwendung von KI zur automatischen Optimierung von Linux-Kernel-Parameteroperatoren. Zauberoperation: Trennen Sie das Netzwerk im Hintergrund, deaktivieren Sie das Breitbandkonto und zwingen Sie den Benutzer, das optische Modem zu wechseln
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/6214966/blog/7103251
Recomendado
Clasificación