Dubbo 3.3.0-beta 版本正式发布
全新升级的 Triple 协议,Triple 协议可同时运行在 HTTP1/2 之上,与 gRPC 保持 100% 兼容的同时,支持 cURL 和浏览器直接访问。
新发布一系列 Spring Boot Starter 组件,包括 Zookeeper, Nacos, Sentinel 等,大幅降低开发过程中的依赖管理负担。
Rest 风格的编程注解支持(涵盖 Spring MVC、JAX-RS),借助 Dubbo 的多协议发布机制,可以轻松的将 RPC 服务发布为标准的 HTTP 端点,简化前端接入成本。
Dubbo AOT(GraalVM Native Image)正式发布,特定场景下启动速度提升 10 倍,内存等资源消耗降低 4 倍。
升级 JDK 21 支持,增加 Project Loom 协程支持。
可观测性进一步提升,进一步提升 metrics 统计指标,简化 tracing 等使用。
接下来,我们将对其中的一些重点功能进行更深入的讲解。
Spring Boot Starters
Cloud Native
3.3.0-beta.1 版本发布的 Starter 组件,可以大幅简化 Spring Boot 用户的应用开发,以 Zookeeper 注册中心为例,新版本的开发只需要增加以下一个依赖即可。可以通过 https://start.dubbo.apache.org 生成项目快速体验。
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-zookeeper-spring-boot-starter</artifactId>
</dependency>
Dubbo AOT 静态化
(GraalVM Native Image)
Cloud Native
Dubbo AOT 是 Dubbo 3.3.0-beta 版本发布的静态化方案支持,它基于 GraalVM Native Image 实现,旨在大幅提升 Dubbo 应用的启动与运行速度。可以通过 https://start.dubbo.apache.org 快速生成包含 GraalVM 支持的项目,快速体验,以下是测试环境的一些运行效果总结。
Triple 协议升级
Cloud Native
Triple 协议是 Dubbo3 设计的基于 HTTP 的 RPC 通信协议规范,它完全兼容 gRPC 协议,支持 Request-Response、Streaming 流式等通信模型,可同时运行在 HTTP/1 和 HTTP/2 之上。
curl \
--header 'Content-Type: application/json' \
--data '{"sentence": "Hello World"}' \
http://localhost:8080/apache.dubbo.demo.example.v1.ExampleService/Say
Dubbo 框架提供了 Triple 协议的多种语言实现,它们可以帮助你构建浏览器、gRPC 兼容的 HTTP API 接口。Dubbo 框架同时支持 Protobuf-first 和 Interface-first 编程模式,即不绑定 IDL 的服务定义与开发模式,比如在 Dubbo Java 中,你可以选择使用 Java Interface 和 Pojo 类定义 Dubbo 服务,并将其发布为基于 Triple 协议通信的微服务。
Rest 协议升级
Cloud Native
基于 Dubbo 的多协议发布能力,rest 风格的 http 服务发布可以有非常多的应用场景,它可以让你在增加少量注解代码的情况下(当前支持 Spring MVC、JAX-RS 两套注解模式),将之前的 RPC 服务发布为标准的 rest 风格 HTTP 服务。这在很多场景将会非常有用,比如以下是一个 Dubbo 与 Spring Cloud 体系互通的用例。
我们要实现以下互通目标,让左边的 Spring 应用能够调用到右侧的 Dubbo 应用。我们可以利用 Dubbo 的多协议发布机制,为一些服务配置多协议(tcp & http)发布,让这个 Dubbo 应用同时服务 Dubbo 微服务体系和 Spring Cloud 微服务体系。
dubbo:
protocols:
- id: rest
name: rest
port: 8090
- id: dubbo
name: dubbo
port: 20880
同时,@DubboService 服务注解中也配置为多协议发布。
@DubboService(protocol="rest,dubbo")
public class UserServiceImpl implements UserService {}
这样,我们就成功的将 UserService 服务以 dubbo 和 rest 两种协议发布了出去(多端口多协议的方式),dubbo 协议为 Dubbo 体系服务,rest 协议为 Spring Cloud 体系服务。
public interface UserService {
List<User> getUsers();
}
可观测性(Metrics & Tracing)
Cloud Native
首先,是大幅提升了 Metrics、Tracing 的易用性,对于 Spring Boot 用户而言,只需要添加一个依赖即可。
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-observability-spring-boot-starter</artifactId>
</dependency>
开启 Tracing:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-tracing-otel-zipkin-spring-boot-starter</artifactId>
</dependency>
其次,在监控指标的丰富度上进一步提升。
JDK 21 与协程
Cloud Native
3.3.0-beta 版本可支持平滑升级到 JDK 21 版本,同时,增加了 Project Loom 协程支持,只需要配置 setThreadPool(virtual) 即可实现协程模型开启。
virtual=org.apache.dubbo.common.threadpool.support.loom.VirtualThreadPool
/**
* Creates a thread pool that use virtual thread
*
* @see Executors#newVirtualThreadPerTaskExecutor()
*/
public class VirtualThreadPool implements ThreadPool {
@Override
public Executor getExecutor(URL url) {
String name = url.getParameter(THREAD_NAME_KEY, (String) url.getAttribute(THREAD_NAME_KEY, DEFAULT_THREAD_NAME));
return Executors.newThreadPerTaskExecutor(
Thread.ofVirtual()
.name(name, 1)
.factory());
}
}
Roadmap
Cloud Native
对于 Dubbo3 而言,当前社区维护有 3.1、3.2、3.3 三个大的版本,其中 3.2 是当前推荐的稳定生产版本,3.3 正处于 beta 阶段,在接下来几个月将取代 3.2 成为最新稳定版本。
该二维码7天内(12月7日前)有效
扫码添加小助手入群
微信扫码关注该文公众号作者