如何在MSE上為Dubbo應用構建服務注冊中心?
更新時間 2024-09-11 18:05:26
最近更新時間: 2024-09-11 18:05:26
分享文章
本章節介紹為Dubbo應用構建服務注冊中心的方案
事前準備
本文的目的是關于Dubbo 應用接入MSE注冊配置中心。首先是工程準備,一般情況下是兩個Spring Boot 應用和一個公共的接口模塊。
模塊說明:
- common-api ,公共接口模塊(接口),供服務消費者和服務提供者調用。
- dubbo-provider服務提供者模塊(接口實現類),依賴common-api模塊。
- dubbo-consumer服務消費者模塊(controller),依賴common-apii模塊。
消費者和提供者通過公共接口模塊進行rpc遠程調用。
Dubbo主要相關的依賴項和版本如下所示:
<!--dubbo相關-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.15</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>2.7.15</version>
</dependency>
在接入之前需要有一個MSE Nacos實例,并獲得期訪問信息。
公共模塊
公共接口模塊里面只有一個接口,沒有配置文件,打jar包。
public interface InfoService{
String getInfo();
}
Provider模塊
application.yml配置文件:
server:
port: 22020
spring:
application:
name: dubbo-provider
dubbo:
registry:
address: nacos://訪問地址?username=nacos&password=密碼
application:
name: dubbo-provider
protocol:
name: dubbo
port: PORT
scan:
base-packages: com.ctg.mse.dubbo.pro.service
provider:
timeout: 30000
接口實現類,該類實現了公共接口模塊創建的接口.注意包路徑必須包含在配置文件的sacn.base-package路徑中。
package com.ctg.mse.dubbo.pro.service;
import com.ctg.mse.common.InfoService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;
@Component
@DubboService
public class InfoServiceImpl implements InfoService {
@Override
public String getInfo() {
return "Hello , dubbo provider method!";
}
}
Provider啟動類:
@EnableDubbo
@SpringBootApplication
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
Consumer模塊
application.yml配置文件:
server:
port: 21060
spring:
application:
name: dubbo-consumer
dubbo:
registry:
address: nacos://Nacos訪問地址?username=用戶名&password=密碼
application:
name: dubbo-consumer
consumer:
timeout: 30000
controller,調用公共接口模塊創建的接口:
@RestController
public class InfoController {
@DubboReference(check = false)
private InfoService infoService;
@GetMapping("/getInfo")
public String getInfo() {
return infoService.getInfo();
}
}
Consumer啟動類:
@EnableDubbo
@SpringBootApplication
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
服務調用測試
啟動服務提供者和服務消費者,打MSE 開Nacos控制臺>服務管理-服務列表頁面查看注冊中心中的服務,查看服務注冊情況。
調用服務消費者的getInfo接口,服務提供者會返回結果。

至此,dubbo融合MSE Nacos作為注冊中心成功。