Redian新闻
>
Dubbo 3.3.0-beta 版本正式发布

Dubbo 3.3.0-beta 版本正式发布

公众号新闻

近日,Apache Dubbo 发布了 3.3 分支大版本 3.3.0-beta.1,相较于 3.2 系列版本,3.3.0-beta 引入了一些重量级的功能升级,按照社区规划,3.3 也将是 Dubbo3 非常重要的一个里程碑大版本,在 3.3.0 首个正式版本之后 Dubbo3 将正式进入长期稳定维护态,即标志着 Dubbo3 作为面向云原生时代的下一代微服务框架将具备规划的所有核心功能。
让我们先快速看一下 3.3.0-beta.1 版本为我们带来了哪些核心能力升级吧:
  • 全新升级的 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-curator5-zookeeper-spring-boot-starter、 dubbo-nacos-spring-boot-starter、 dubbo-sentinel-spring-boot-starter、 dubbo-seata-spring-boot-starter 、 dubbo-observability-spring-boot-starter、 dubbo-tracing-otel-zipkin-spring-boot-starter 等。

Dubbo AOT 静态化

(GraalVM Native Image)

Cloud Native

Dubbo AOT 是 Dubbo 3.3.0-beta 版本发布的静态化方案支持,它基于 GraalVM Native Image 实现,旨在大幅提升 Dubbo 应用的启动与运行速度。可以通过 https://start.dubbo.apache.org 快速生成包含 GraalVM 支持的项目,快速体验,以下是测试环境的一些运行效果总结。

Native 的可视性文件比 Jar 包方式的启动耗时降低了 12 倍+,在客户端应用,它的启动耗时降低了 11 倍+。所以在刚刚提到的 Serverless 场景上,它能提供一个非常好的启动速度。在扩容的时候能够达到秒级,甚至达到毫秒级。
通过静态化执行文件执行后,比都为 Jar 包的情况,第一次调用的耗时降低 6 倍。这第一次调用代表的是预热的时长,以及第一次需要解析的类,包括资源的情况等等。这让我们在 Serverless 场景下能够瞬间达到性能峰值。
在 Dubbo 应用的基础上,它的内存损耗也降低大概 3.5 倍。Native 静态化执行文件可以做到 60M 的内存占比,在客户端它的内存损耗也大概降低了 4 倍。

Triple 协议升级




Cloud Native

Triple 协议是 Dubbo3 设计的基于 HTTP 的 RPC 通信协议规范,它完全兼容 gRPC 协议,支持 Request-Response、Streaming 流式等通信模型,可同时运行在 HTTP/1 和 HTTP/2 之上。

你可以使用 cURL 等标准 HTTP 工具直接访问发布的 Triple 服务,大幅降低测试与前端接入成本。
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 协议通信的微服务。

以下是 Triple 协议的多语言实现布局,目前已经支持了浏览器端的 Dubbo-web,后端的 Java、Go、Node.js、Rust 等,未来会提供 Mobile 端以及更多后端语言实现。

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 体系服务。

为了发布标准的 rest 风格服务,记得在接口上增加注解,在这里我们使用 Spring MVC 注解。
@RestController@RequestMapping("/users")public interface UserService {    @GetMapping(value = "/list")    List<User> getUsers();}


可观测性(Metrics & Tracing)




Cloud Native

首先,是大幅提升了 Metrics、Tracing 的易用性,对于 Spring Boot 用户而言,只需要添加一个依赖即可。

开启 Metrics:
<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) 即可实现协程模型开启。

具体实现上,是我们在新版本增加了以下 Threadpool SPI 实现:
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 成为最新稳定版本。

截止 3.3.0-beta.1 版本,整个 Dubbo3 规划的核心功能均已开发完成。从这个版本开始,Dubbo3 将进入长期稳定维护阶段,这意味着我们将不会再为任何的 Dubbo3 新版本引入新的功能规划,社区将专注在已有功能的迭代与稳定性保证上。基于这样的基调,我们制定未来半年的社区 Roadmap:https://github.com/apache/dubbo/issues/13065
关于面向未来的新功能,我们将在 Dubbo4 中持续探索,欢迎持续关注社区进展。
微信扫描下方二维码即可加入 Apache Dubbo 开发者交流群,或者可以通过添加社区小助手微信拉您进群。

该二维码7天内(12月7日前)有效

如果您是生产上使用 Dubbo 的用户,请联系小助手,我们将拉您进专门的生产用户支持群。

扫码添加小助手入群

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
又在同一天开赛!BBO & USABO如何双线夺金?重磅!DoorDash、UberEats、Grubhub和Relay通通惨败一本正经胡说八道的AIBB鸭 | 魅族21正式发布;iPhone 16显示屏及尺寸曝光;海底捞回应禁跳“科目三”;抖音封禁多个百万粉丝矩阵号巴以无解的仇恨是人类文明的悲哀超1.37万人死亡!冲突不断升级,墨尔本正在被撕裂,学生也卷了进来!火药味越来越浓...Kubernetes高可用集群二进制部署v1.28.0版本hé bàng?hé bèng?瑞士自由行(二)中央网信办发布《全球人工智能治理倡议》;微软正式发布AI内容审核工具;OpenAI开发可高精度检测AI生成图像工具丨AIGC日报小米汽车暂不会推出增程车型/ChatGPT 推出 Team 版本/网飞版《三体》发布正式预告又在同一天开赛!BBO&USABO如何双线夺金?Fedora 39 版本发布,新亮相一款不可变版本 | Linux 中国.NET 8正式GA,最新LTS版本缓解99%的留学焦虑!《2024美本申请工具书》正式发布了小朋友不会说谎,但会一本正经地胡说八道BB鸭 | 京东物流春节一件涨5元;小米小折叠屏手机入网;鸿蒙星河版正式发布;AirPods Pro推出龙年特别款​迈向指数化投资的新世界!华宝证券正式发布《敞口制胜——2024年ETF展望》报告早鸟报|文心大模型4.0正式发布;华为回应“花瓣支付”更名;东方甄选正式宣布推出付费会员业务...Matter1.2标准正式发布;英伟达开始设计PC芯片;华为辟谣万枚低轨卫星传言|AIoT情报不作古体已有时日,得宣兄报近况,感而命笔并得三题,寄呈以慰远念(七律)Kubuntu 23.10 版本已发布! | Linux 中国中亚区域绿色科技发展行动计划在第三届“一带一路”国际合作高峰论坛绿色发展高级别论坛上正式发布百度文心大模型4.0正式发布并开启邀测;YouTube推出广告套餐,利用AI投放广告丨AIGC日报马斯克首个AI工具Grok命名有何深意?ChatGPT给出完美解答;OpenHarmony 4.0版本正式发布丨AIGC日报JetBrains 发布了 Kotlin Multiplatform 的首个稳定版本基于 Dubbo,如何利用APISIX 构建跨网 RPCSpring Boot 3.2 正式发布,开箱即用的虚拟线程和 GraalVM,尝鲜一下!日本正在为大地震做准备药你知道 |《药品经营和使用质量监督管理办法》正式发布!BB鸭 | vivo X100正式发布;小红书注册“小地瓜”商标;小米汽车信息首曝;红魔9 Pro官宣使用 kube-downscaler 降低Kubernetes集群成本哈马斯突袭以色列犯下反人类罪Spleen, 脾, 脾气Kubernetes:kube-scheduler 源码分析
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。