Spring Boot ek açıklamalarını kullanarak sıfırdan bir Dubbo hizmet sağlayıcısı ve tüketici oluşturun, bunları Nacos'a kaydedin ve SAE üzerinde dağıtın. Bu yaklaşım, ayrıntılı XML yapılandırmalarına duyulan ihtiyacı ortadan kaldırır ve Maven veya Dubbo çerçevesine yeni başlayanlar için iyi bir başlangıç noktasıdır.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Maven yüklü ve ortam değişkenleri yapılandırılmış olmalı
-
En son Nacos Server indirilmiş ve tek düğüm (standalone) modunda çalışıyor olmalı:
Nacos Server paketini açın.
nacos/bindizinine gidin.-
Nacos Server'ı başlatın:
Linux, UNIX veya macOS:
sh startup.sh -m standalonekomutunu çalıştırınWindows:
startup.cmddosyasındaset MODE="standalone"ayarını yapın, ardından dosyayı çalıştırın
Demo projesi
Projeyi sıfırdan oluşturmak için bu konudaki adımları izleyin veya demo projesini doğrudan indirin. Depoyu klonlamak için aşağıdaki komutu da kullanabilirsiniz:
git clone https://github.com/aliyun/alibabacloud-microservice-demo.git
Bu konuya ait demo, alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot dizininde bulunmaktadır.
Hizmet sağlayıcı oluşturma
1. Adım: Projeyi kurma
spring-boot-dubbo-provider adlı bir Maven projesi oluşturun ve aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Bu örnekte Spring Boot 2.0.6.RELEASE sürümü kullanılmaktadır.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
2. Adım: Hizmet arayüzünü tanımlama
Tüm Dubbo hizmetleri arayüzler üzerinden sunulur.
src/main/javadizinindecom.alibaba.edas.bootadlı bir paket oluşturun.Bu paket içinde
IHelloServiceadlı bir arayüz oluşturun:
package com.alibaba.edas.boot;
public interface IHelloService {
String sayHello(String str);
}
3. Adım: Hizmeti uygulama
com.alibaba.edas.boot paketinde, IHelloService arayüzünü uygulamak için IHelloServiceImpl adlı bir sınıf oluşturun:
package com.alibaba.edas.boot;
import com.alibaba.dubbo.config.annotation.Service;
@Service
public class IHelloServiceImpl implements IHelloService {
public String sayHello(String name) {
return "Hello, " + name + " (from Dubbo with Spring Boot)";
}
}
Buradaki@Serviceek açıklaması, Dubbo tarafından sağlanancom.alibaba.dubbo.config.annotation.Serviceolup Spring'in@Serviceek açıklaması değildir.
4. Adım: Dubbo hizmetini yapılandırma
src/main/resources dizininde application.properties (veya application.yaml) dosyasını oluşturun ve aşağıdaki satırları ekleyin:
# Packages to scan for Dubbo annotations (@Service, @Reference)
dubbo.scan.basePackages=com.alibaba.edas.boot
dubbo.application.name=dubbo-provider-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Üç yapılandırma öğesinin tümü gereklidir; hiçbirinin varsayılan değeri yoktur.
dubbo.scan.basePackages:@Serviceve@Referenceek açıklamalarını içeren paket(ler). Birden fazla paketi virgülle ayırın.
dubbo.registry.address:nacos://ile başlamalı, ardından Nacos Server IP adresi ve bağlantı noktası gelmelidir. SAE tarafından yönetilen kayıt defterini kullanıyorsanız, SAE bu adresi çalışma zamanında otomatik olarak değiştirir. Kendi yönettiğiniz bir Nacos örneği kullanıyorsanız,127.0.0.1:8848değerini ilgili IP adresi ve bağlantı noktasıyla değiştirin.
5. Adım: Sağlayıcıyı başlatma
Spring Boot ana sınıfı DubboProvider oluşturun ve çalıştırın:
package com.alibaba.edas.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DubboProvider {
public static void main(String[] args) {
SpringApplication.run(DubboProvider.class, args);
}
}
Sağlayıcıyı doğrulama
http://127.0.0.1:8848 adresinden Nacos konsolunda oturum açın. Sol gezinme bölmesinde Services seçeneğine tıklayın. Hizmet listesinde com.alibaba.edas.boot.IHelloService hizmetinin, hizmet grubunun ve sağlayıcı IP adresinin göründüğünü onaylayın.
Hizmet tüketici oluşturma
1. Adım: Projeyi kurma
spring-boot-dubbo-consumer adlı bir Maven projesi oluşturun ve aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Bu örnekte de Spring Boot 2.0.6.RELEASE sürümü kullanılmaktadır.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
Spring Boot 1.x kullanmanız gerekiyorsa, Spring Boot 1.5.x ile birlikte com.alibaba.boot:dubbo-spring-boot-starter:0.1.0 kullanın. Spring Boot 1.x yaşam döngüsünün Ağustos 2019'da sona erdiğini unutmayın; daha yeni bir sürüm kullanmanız şiddetle tavsiye edilir.
2. Adım: Hizmet arayüzüne referans verme
src/main/java dizininde com.alibaba.edas.boot paketini oluşturun ve sağlayıcıdakiyle aynı IHelloService arayüzünü ekleyin:
package com.alibaba.edas.boot;
public interface IHelloService {
String sayHello(String str);
}
3. Adım: Uzak hizmeti çağırma
Uzak IHelloService hizmetini inject etmek için @Reference ek açıklamasını kullanan ve bunu HTTP üzerinden sunan bir denetleyici oluşturun:
package com.alibaba.edas.boot;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoConsumerController {
@Reference
private IHelloService demoService;
@RequestMapping("/sayHello/{name}")
public String sayHello(@PathVariable String name) {
return demoService.sayHello(name);
}
}
Buradaki@Referenceek açıklaması, Dubbo tarafından sağlanancom.alibaba.dubbo.config.annotation.Referenceşeklindedir.
4. Adım: Tüketiciyi yapılandırma
src/main/resources dizinindeki application.properties (veya application.yaml) dosyasına aşağıdakileri ekleyin:
dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Her iki yapılandırma öğesi de gereklidir. Nacos Server farklı bir ana bilgisayarda çalışıyorsa, 127.0.0.1:8848 değerini gerçek IP adresi ve bağlantı noktasıyla değiştirin.
5. Adım: Tüketiciyi başlatma
Spring Boot ana sınıfı DubboConsumer oluşturun ve çalıştırın:
package com.alibaba.edas.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DubboConsumer {
public static void main(String[] args) {
SpringApplication.run(DubboConsumer.class, args);
}
}
Tüketiciyi doğrulama
http://127.0.0.1:8848 adresinden Nacos konsolunda oturum açın. Sol gezinme bölmesinde Services seçeneğine tıklayın. Hizmet listesinde com.alibaba.edas.boot.IHelloService hizmetinin, hizmet grubunun ve arayan IP adresinin göründüğünü onaylayın.
Hizmet çağrısını doğrulama
Hem sağlayıcı hem de tüketici çalışırken bir test isteği gönderin:
curl http://localhost:8080/sayHello/SAE
Beklenen çıktı:
Hello, SAE (from Dubbo with Spring Boot)
SAE üzerinde dağıtma
SAE, şirket içi Nacos kayıt defterini çalışma zamanında otomatik olarak SAE hizmet kayıt defteriyle değiştirir; bu nedenle kod değişikliği gerekmez.
Konsol üzerinden dağıtmadan önce her uygulamayı çalıştırılabilir bir JAR veya WAR paketine derleyin:
-
pom.xmldosyasına Maven paketleme eklentisini ekleyin. Sağlayıcı:<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.edas.boot.DubboProvider</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build>Tüketici:
<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.edas.boot.DubboConsumer</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> JAR dosyasını derlemek için
mvn clean packagekomutunu çalıştırın.Paketi SAE üzerinde dağıtın. Dağıtım seçenekleri için bkz. Uygulama dağıtımı.
Sonraki adımlar
SAE üzerinde Dubbo uygulamaları barındırma — Ek açıklamalar yerine XML yapılandırma dosyalarını kullanarak Dubbo hizmetlerinin nasıl geliştirileceğini öğrenin
Uygulama dağıtımı — SAE tarafından desteklenen tüm dağıtım yöntemlerini keşfedin