Bu konuda, XML yapılandırması kullanarak yerel ortamda örnek bir Dubbo mikro hizmet uygulaması oluşturma ve bunu Serverless App Engine (SAE) üzerine dağıtma adımları anlatılmaktadır. Uygulama, hizmet sağlayıcı ve hizmet tüketicisinden oluşur; her ikisi de hizmet kayıt defteri olarak Nacos kullanır. Dağıtımdan sonra SAE, yerel Nacos kayıt defteri adresini otomatik olarak değiştirir; herhangi bir yapılandırma değişikliği yapmanıza gerek kalmaz.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Ortam değişkenlerinizde kurulu ve yapılandırılmış Maven
Tek düğüm modunda çalışan yerel bir Nacos Server (aşağıdaki adımlara bakın)
Nacos Server Kurulumu
Nacos Server paketini indirin ve sıkıştırmasını açın.
-
nacos/bindizinine gidin ve Nacos Server'ı başlatın:Linux, Unix veya macOS: ``
bash sudo sh startup.sh -m standalone``Windows: ``
bash startup.cmd -m standalone``
standalone, Nacos'u küme modu yerine tek düğüm modunda başlatır. Windows'tastartup.cmddosyasına çift tıklamak başarısız olursa dosyayı açın veMODE="standalone"değerini manuel olarak ayarlayın. Ayrıntılar için Nacos Hızlı Başlangıç Kılavuzu konusuna bakın.
Sürüm notu: Dubbo 2.7.x ve Dubbo 3.0.x Mart 2023'te yaşam döngüsünü tamamlamıştır. Bu konuda Dubbo 3.2.15 kullanılmaktadır.
Adım 1: Sağlayıcı oluşturun
Yerel ortamda bir Maven projesi oluşturun, hizmet arayüzünü tanımlayın, XML tabanlı hizmet kaydını yapılandırın ve sağlayıcıyı başlatın.
1,1 Bir Maven projesi oluşturun ve bağımlılıkları ekleyin
IntelliJ IDEA veya Eclipse gibi bir IDE kullanarak bir Maven projesi oluşturun.
-
Aşağıdaki bağımlılıkları
pom.xmldosyasına ekleyin:<dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>3.2.15</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-nacos</artifactId> <version>3.2.15</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.1.1</version> </dependency> </dependencies>
1,2 Hizmet arayüzünü tanımlayın
Tüm Dubbo hizmetleri arayüzler aracılığıyla tanımlanır.
src/main/javadizinindecom.alibaba.edaspaketini oluşturun.-
com.alibaba.edaspaketi içindeIHelloServicearayüzünü oluşturun:package com.alibaba.edas; public interface IHelloService { String sayHello(String str); } -
com.alibaba.edaspaketi içindeIHelloServiceImpluygulama sınıfını oluşturun:package com.alibaba.edas; public class IHelloServiceImpl implements IHelloService { public String sayHello(String str) { return "hello " + str; } }
1,3 Dubbo hizmetini yapılandırın
src/main/resourcesdizinindeprovider.xmldosyasını oluşturun.-
Spring ve Dubbo XML ad alanlarını ekleyin:
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> -
Hizmet arayüzünü dışa aktarın ve yerel Nacos Server'a işaret edin:
Öğe Değer Not Kayıt defteri adresi nacos://127.0.0.1:8848Yerel Nacos Server'ınıza işaret eder. SAE üzerine dağıttıktan sonra bu adres, SAE tarafından yönetilen kayıt defteriyle otomatik olarak değiştirilir; kod değişikliği gerekmez. Nacos bağlantı noktası 8848Sabittir; değiştirmeyin. <dubbo:application name="demo-provider"/> <dubbo:protocol name="dubbo" port="28082"/> <dubbo:service interface="com.alibaba.edas.IHelloService" ref="helloService"/> <bean id="helloService" class="com.alibaba.edas.IHelloServiceImpl"/> <dubbo:registry address="nacos://127.0.0.1:8848" />Temel yapılandırma:
1,4 Sağlayıcıyı başlatın
-
com.alibaba.edaspaketi içindeProvidersınıfını oluşturun:package com.alibaba.edas; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"}); context.start(); System.in.read(); } } Hizmeti başlatmak için
Providerana yöntemini çalıştırın.
Sağlayıcıyı doğrulayın
http://127.0.0.1:8848 adresindeki Nacos konsolunda oturum açın. Sol gezinme bölmesinde Service List seçeneğine tıklayın.
Hizmet com.alibaba.edas.IHelloService listesinde, Service Group ve Provider IP bilgileriyle birlikte görünür.
Adım 2: Tüketici oluşturun
Tüketici için ayrı bir Maven projesi oluşturun, sağlayıcı hizmetine abone olun ve çağrının yerel ortamda çalıştığını doğrulayın.
2,1 Bir Maven projesi oluşturun ve bağımlılıkları ekleyin
Bir Maven projesi oluşturmak ve aynı üç bağımlılığı pom.xml dosyasına eklemek için Adım 1.1 ile aynı adımları izleyin.
2,2 Hizmet arayüzünü tanımlayın
src/main/javadizinindecom.alibaba.edaspaketini oluşturun.-
com.alibaba.edaspaketi içinde aynıIHelloServicearayüzünü oluşturun:package com.alibaba.edas; public interface IHelloService { String sayHello(String str); }
Üretim ortamında arayüzü paylaşılan bir modülde tanımlayın ve hem sağlayıcı hem de tüketici tarafından Maven bağımlılıkları aracılığıyla referans verin. Arayüzün burada yinelenmesi yalnızca gösterim amaçlıdır.
2,3 Dubbo hizmetini yapılandırın
src/main/resourcesdizinindeconsumer.xmldosyasını oluşturun.-
Spring ve Dubbo XML ad alanlarını ekleyin (
provider.xmlile aynı):<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> -
Sağlayıcı hizmetine abone olun:
<dubbo:application name="demo-consumer"/> <dubbo:registry address="nacos://127.0.0.1:8848"/> <dubbo:reference id="helloService" interface="com.alibaba.edas.IHelloService"/>
2,4 Tüketiciyi başlatın
-
com.alibaba.edaspaketi içindeConsumersınıfını oluşturun:package com.alibaba.edas; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.concurrent.TimeUnit; public class Consumer { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"}); context.start(); while (true) { try { TimeUnit.SECONDS.sleep(5); IHelloService demoService = (IHelloService)context.getBean("helloService"); String result = demoService.sayHello("world"); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } } } Hizmeti başlatmak için
Consumerana yöntemini çalıştırın.
Tüketiciyi doğrulayın
Başlatmanın ardından konsol sürekli olarak aşağıdakileri yazdırır:
hello world
Bu çıktı, tüketicinin sağlayıcıyı başarıyla çağırdığını doğrular.
http://127.0.0.1:8848 adresindeki Nacos konsolunda oturum açın ve sol gezinme bölmesinde Services seçeneğine tıklayın. Callers seçeneğini belirleyin.
Hizmet com.alibaba.edas.IHelloService listesinde, Service Group ve Subscriber IP bilgileriyle birlikte görünür.
Adım 3: SAE üzerine dağıtın
Sağlayıcı ve tüketiciyi çalıştırılabilir JAR dosyaları olarak paketleyin ve bunları SAE üzerine dağıtın.
3,1 Derleme eklentisini ekleyin
Her iki projenin de pom.xml dosyasına aşağıdaki <build> yapılandırmasını ekleyin:
-
Provider —
mainClassdeğerinicom.alibaba.sae.Providerolarak ayarlayın:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>spring-boot</classifier> <mainClass>com.alibaba.sae.Provider</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> -
Consumer —
mainClassdeğerinicom.alibaba.sae.Consumerolarak ayarlayın:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>spring-boot</classifier> <mainClass>com.alibaba.sae.Consumer</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build>
3,2 JAR paketlerini derleyin
Her proje dizininde aşağıdaki komutu çalıştırın:
mvn clean package
Bu işlem, target/ dizininde çalıştırılabilir bir JAR dosyası oluşturur.
3,3 SAE üzerine dağıtın
Her iki JAR paketini de SAE üzerine dağıtın. Dağıtım adımları için Java uygulaması dağıtma konusuna bakın.
Dağıtımdan sonra SAE, yerel Nacos kayıt defteri adresini ( nacos://127.0.0.1:8848 ) otomatik olarak SAE tarafından yönetilen hizmet kayıt defterinin adresiyle değiştirir. Yapılandırma dosyalarınızda herhangi bir değişiklik yapmanıza gerek yoktur.
Sonraki adımlar
Java uygulaması dağıtma — SAE üzerinde JAR tabanlı uygulamalar için tam dağıtım seçenekleri