微服务开发
微服务开发
Dubbo 解决企业微服务从开发、部署到治理运维的一系列挑战,Dubbo 为开发者提供从项目创建、开发测试,到部署、可视化监测、流量治理,再到生态集成的全套服务。
- 开发层面,Dubbo 提供了 Java、Go、Rust、Node.js 等语言实现并定义了一套微服务开发范式,配套脚手架可用于快速创建微服务项目骨架
- 部署层面,Dubbo 应用支持虚拟机、Docker 容器、Kubernetes、服务网格架构部署
- 服务治理层面,Dubbo 提供了地址发现、负载均衡、流量管控等治理能力,官方还提供 Admin 可视化控制台、丰富的微服务生态集成
开发
接下来以 Java 体系 Spring Boot 项目为例讲解 Dubbo 应用开发的基本步骤,整个过程非常直观简单,其他语言开发过程类似。
创建项目
Dubbo 微服务项目脚手架(支持浏览器页面、命令行和 IDE)可用于快速创建微服务项目,只需要告诉脚手架期望包含的功能或组件,脚手架最终可以帮助开发者生成具有必要依赖的微服务工程。更多脚手架使用方式的讲解,请参见任务模块的 通过模板生成项目脚手架
开发服务
1. 定义服务
public interface DemoService {
String hello(String arg);
}
2. 提供业务逻辑实现
@DubboService
public class DemoServiceImpl implements DemoService {
public String hello(String arg) {
// put your microservice logic here
}
}
发布服务
1. 发布服务定义
为使消费方顺利调用服务,服务提供者首先要将服务定义以 Jar 包形式发布到 Maven 中央仓库。
2. 对外暴露服务
补充 Dubbo 配置并启动 Dubbo Server
dubbo:
application:
name: dubbo-demo
protocol:
name: dubbo
port: -1
registry:
address: zookeeper://127.0.0.1:2181
调用服务
首先,消费方通过 Maven/Gradle 引入 DemoService
服务定义依赖。
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-demo-interface</artifactId>
<version>3.2.0</version>
</dependency>
编程注入远程 Dubbo 服务实例
@Bean
public class Consumer {
@DubboReference
private DemoService demoService;
}
以上是 Dubbo 微服务开发的流程性说明,实际开发的详细指导步骤请参见:
部署
Dubbo 原生服务可打包部署到 Docker 容器、Kubernetes、服务网格 等云原生基础设施和微服务架构。
关于不同环境的部署示例,可参考:
治理
对于服务治理,绝大多数应用只需要增加以下配置即可,Dubbo 应用将具备地址发现和负载均衡能力。
dubbo:
registry:
address: zookeeper://127.0.0.1:2181
部署并打开 Dubbo Admin 控制台,可以看到集群的服务部署和调用数据
除此之外,Dubbo Amin 还可以通过以下能力提升研发测试效率
- 文档管理,提供普通服务、IDL 文档管理
- 服务测试 & 服务 Mock
- 服务状态查询
对于更复杂的微服务实践场景,Dubbo 还提供了更多高级服务治理特性,具体请参见文档了解更多。包括:
- 流量治理
- 动态配置
- 限流降级
- 数据一致性
- 可观测性
- 多协议
- 多注册中心
- 服务网格
最后修改 May 9, 2023: Initializer announcement (#2582) (21b062fcdb)