Spring Boot + Nacos + Dubbo + Dubbo Admin
关于微服务调用,之前接触的比较多的是 Spring Cloud 服务间调用,都是 Http Rest 服务调用,优点就是方便,兼容性好,集成性高,但如果追求高效,建议使用 Dubbo,使用的 RPC 服务,都是 TCP 长连接,不会造成资源浪费。
Nocos
其实 ZooKeeper 更好,但是咱注册中心和配置用的这个,就不搞事了
https://nacos.io/zh-cn/
这里下载当前最新版本,v2.0.3,解压后启动路径 acosinstartup.cmd 登录地址:http://127.0.0.1:8848/nacos/index.html#/login 账号/密码:nacos/nacos
Dubbo Admin
这个是 Dubbo 后台管理页面,可有可无,没有也不影响使用
https://github.com/apache/dubbo-admin
- 这里下载当前最新版本,v0.4.0
- 添加配置路径:apache-dubbo-admin-0.4.0-bin-releaseinconfigapplication.properties
# nacos config, add parameters to url like username=nacos&password=nacos admin.registry.address=nacos://127.0.0.1:8848 admin.config-center=nacos://127.0.0.1:8848 admin.metadata-report.address=nacos://127.0.0.1:8848
- 解压后启动路径 apache-dubbo-admin-0.4.0-bin-releaseinstartup.cmd
- 登录:http://localhost:2399/#/login
- 账号/密码:root/root
dubbo-interface
interface 包暴露提供给调用方,无实现类
public interface ApiServiceFacade {
/**
* 查询
*/
BaseResponse<Object> queryDataList();
}
dubbo-impl
提供 Facade 接口-实现类-不对外暴露 添加 Dubbo 依赖,当前版本 v3.0.4
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
添加 nacos 依赖,当前版本 v2.0.3
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos-client.version}</version>
</dependency>
添加 facade 接口
<dependency>
<groupId>com.example.dubbo</groupId>
<artifactId>dubbo-interface</artifactId>
</dependency>
添加配置
server:
port: 9090
dubbo:
application:
name: dubbo-impl
registry:
address: nacos://127.0.0.1:8848
scan:
basePackages: com.example.dubbo.impl
添加 facade 实现类
/**
* 实现类
*
* @author jason
*/
@Slf4j
@Service
@DubboService(version = "1.0.0", timeout = 6000)
public class ApiServiceFacadeImpl implements ApiServiceFacade {
@Override
public BaseResponse<Object> queryDataList() {
return BaseResponse.success();
}
}
dubbo-client
依赖同上 添加配置
server:
port: 9091
dubbo:
application:
name: dubbo-client
registry:
address: nacos://127.0.0.1:8848
scan:
basePackages: com.example.dubbo.impl
测试调用 Dubbo Facede 接口
@DubboReference(version = "1.0.0")
private ApiServiceFacade apiServiceFacade;
/**
* http://127.0.0.1:9091/test/list
*/
@GetMapping("list")
public Object list() {
return apiServiceFacade.queryDataList();
}
