该文章内容发布已经超过一年,请注意检查文章中内容是否过时。
Dubbo Rust 定位为 Dubbo 多语言体系的重要实现,提供高性能、易用、可扩展的 RPC 框架,同时通过接入 Dubbo Mesh 体系提供丰富的服务治理能力。本文主要为大家介绍 Dubbo Rust 项目基本情况,通过一个示例快速体验 Rust 首个正式版本特性,并给出了 Dubbo Rust 社区的近期规划,适合于关注或正在采用 Rust 语言的开发者与企业用户阅读。
Dubbo 作为 Apache 基金会最活跃的明星项目之一,同时也是国内最受欢迎的开源微服务框架,在易用性、高性能通信、服务治理等方面有着非常大的优势,通过 Dubbo3、Dubbo Mesh 等提供了云原生友好的开发与部署模式。与此同时,Dubbo 的多语言体系也得到了快速发展,长期以来提供的有 Java、Golang 两种语言实现,Rust、Node、Python、C++ 等语言实现的支持也已在社区正式启动。
Dubbo Rust 目标是对齐 Dubbo3 的所有核心功能设计,包括基于 HTTP/2 的高性能通信、用户友好的微服务开发编程模式、通过接入DubboMesh提供丰富的服务治理能力等,相比于其他语言实现,Dubbo Rust 将很好的利用 Rust 语言极致性能、安全和指令级掌控能力的特点。 对于微服务框架,主流的编程语言都有对应的实现,而 Dubbo Rust 将很好的填补 Rust 领域的空白:
依托 Dubbo 庞大的用户群,以及 Dubbo 体系下的 Mesh 服务治理整体方案规划。Dubbo Rust 可以轻松地融入到现有的云原生研发体系中,不会增加使用者的研发负担。下图是社区推出的 Dubbo Mesh 架构设计。
在上述架构下,整体分为控制面和数据面两个部分,其中,
在架构设计方面,Dubbo Rust 将围绕 Dubbo 核心设计以及 Rust 语言的特性进行设计,并将 Dubbo 框架的核心设计输出为文档,从而提升Dubbo框架的易用性。因此,Dubbo Rust 具有如下特点:易用性、高性能以及可扩展,同时面向云原生提供丰富的服务治理能力。
Dubbo Rust 首个正式版本为 v0.2.0,v0.2.0 提供的能力包括
Dubbo Rust v0.2.0 的核心组件及通信流程如下图所示
核心架构已经基本完成,接下来的版本将重点关注核心组件的扩展以及服务治理相关组件的设计实现。
完整示例可查看 【Dubbo官网】 -> 【Rust SDK 文档】。 https://dubbo.apache.org/zh-cn/overview/mannual/rust-sdk/quick-start/
使用 Dubbo Rust 服务开发的基本步骤为
使用 IDL 定义服务
添加 Dubbo Rust 依赖到项目
编译 IDL
基于 IDL 编译生成的 stub 编写 Server & Client 逻辑
运行项目
使用 IDL 定义 Dubb 服务
```protobuf
// ./proto/greeter.proto
syntax = "proto3";
option java_multiple_files = true;
package org.apache.dubbo.sample.tri;
// The request message containing the user's name.
message GreeterRequest {
string name = 1;
}
// The response message containing the greetings
message GreeterReply {
string message = 1;
}
service Greeter{
// unary
rpc greet(GreeterRequest) returns (GreeterReply);
}