使用 Dubbo 开发微服务

Dubbo 解决了企业微服务从开发和部署到治理和运维的一系列挑战。Dubbo 为开发者提供了一套完整的服务,从项目创建、开发测试到部署、可视化监控、流量治理和生态系统集成。

开发

  • 语言支持:Dubbo 支持多种编程语言,包括 Java、Go、Rust、Node.js,并定义了一套微服务开发范式。相应的脚手架可用于快速创建微服务项目骨架。
  • 部署:Dubbo 应用程序可以部署在不同的环境中,包括虚拟机、Docker 容器、Kubernetes 和服务网格架构。
  • 服务治理:Dubbo 提供了地址发现、负载均衡和流量控制等功能。它还提供了一个 Admin 仪表板用于可视化控制和丰富的微服务生态系统。

创建项目

可以使用 Dubbo 微服务项目脚手架 快速创建微服务项目。脚手架可以根据您想要的特性或组件生成一个具有必要依赖项的微服务项目。

开发服务

1. 定义服务

public interface DemoService {
    String hello(String arg);
}

2. 实现业务逻辑

@DubboService
public class DemoServiceImpl implements DemoService {
    public String hello(String arg) {
        // your microservice logic here
    }
}

发布服务

1. 发布服务定义

服务提供者需要将服务定义作为 Jar 包发布到 Maven 中央仓库。

2. 暴露服务

添加 Dubbo 配置并启动 Dubbo 服务器。

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 原生服务可以打包并部署到云原生基础设施中,例如 Docker 容器、Kubernetes 和服务网格。

治理

对于服务治理,大多数应用程序只需要添加以下配置。然后,Dubbo 将具有地址发现和负载均衡功能。

dubbo:
  registry:
    address: zookeeper://127.0.0.1:2181

部署并打开 Dubbo Admin 仪表板,您将看到服务部署和调用数据。

Dubbo Admin 还可以通过以下功能提高开发和测试效率

  • 文档管理,用于常规服务和 IDL 文档
  • 服务测试 & 服务 Mock
  • 服务状态查询

对于更复杂的微服务场景,Dubbo 还提供了更多高级治理功能,包括

  • 流量治理
  • 动态配置
  • 限流和降级
  • 数据一致性
  • 可观测性
  • 多协议
  • 多个注册中心
  • 服务网格

本指南概述了使用 Dubbo 开发微服务的流程。有关详细的分步说明,请参阅

部署

Dubbo 的原生服务可以打包并部署在各种云原生基础设施和微服务架构中,包括 Docker 容器、Kubernetes 和服务网格。

有关在不同环境中部署的示例,请参阅

治理

对于服务治理,大多数应用程序只需要添加以下配置,Dubbo 应用程序将具有地址发现和负载均衡功能。

dubbo:
  registry:
    address: zookeeper://127.0.0.1:2181

部署并打开 Dubbo Admin 控制台 后,您可以在集群中看到服务的部署和调用数据。

Admin

此外,Dubbo Admin 还可以通过以下功能增强研发和测试效率

  • 文档管理,提供通用服务和 IDL 文档管理。
  • 服务测试 & 服务 Mock。
  • 服务状态查询。

对于更复杂的微服务实践场景,Dubbo 还提供了许多更高级的服务治理功能。有关更多详细信息,请参阅文档,包括

  • 流量治理
  • 动态配置
  • 限流和降级
  • 数据一致性
  • 可观测性
  • 多协议
  • 多个注册中心
  • 服务网格

上次修改时间:2023 年 10 月 18 日:翻译部分特性概述文档 (#2836) (c3822a9e2ef)