32

​brpc-rs开源:Rust社区迎来企业级高性能RPC框架

 4 years ago
source link: https://www.tuicool.com/articles/fEbEnyj
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

FvEnM3I.jpg!web

Q7ZJvaf.jpg!web

brpc是百度内部使用最为广泛的RPC框架,以C++语言实现。2017年brpc以Apache 2.0协议开源,并于2018年末被Apache孵化器接收。brpc在百度内部经受了高并发高负载的生产环境验证,其性能领跑其他同类RPC产品。

brpc-rs是MesaTEE通用安全计算框架的子项目,是百度安全将brpc引入Rust社区的一次尝试。Rust是一门新兴的系统编程语言,强调高性能和高可靠性,其设计目标之一就是支持大规模的网络应用。近年来Rust社区在网络应用方面进步斐然,包括Futures在内的很多新特性已经加入到语言中。我们希望百度的brpc项目能够助力Rust社区,brpc-rs项目即在此背景下诞生。

ZBNfamj.jpg!web brpc-rs是什么

brpc-rs是一个面向Rust开发者的项目,开发者可以使用Rust语言实现brpc的服务和客户端。项目包括了四个Rust软件包,均托管crates.io上,用户可使用cargo包管理器下载使用:

  • brpc-rs:提供Rust风格的brpc API供用户调用;

  • brpc-build:用于处理用户提供的.proto文件生成Rust和C++代码;

  • brpc-sys:brpc的底层Rust bindings,由brpc-sys调用;

  • brpc-protoc-plugin:用于protobuf compiler的插件,由brpc-build调用。

软件包之间的关系如下图所示:

iEbIriB.jpg!web

brpc-rs大幅简化了Rust开发者通过Rust FFI调用brpc C++ API的流程,只需不到50行Rust代码即可实现一个完整的BRPC服务和客户端。用户首先需要在build.rs中调用brpc-build编译定义服务的*.proto文件,生成ServiceContainer/StubContainer的C++代码,然后需要在Service/Stub中用Rust语言实现具体的业务逻辑,最后调用brpc-rs创建brpc Server/Channel即可。

ZBNfamj.jpg!web 怎样使用brpc-rs

首先brpc本身是必不可少的。我们建议用户从brpc项目的Release页面下载brpc当前最新的0.9.6版本,参考项目的"编译步骤"/"getting started"文档构建和安装brpc的动态库和头文件。对于Ubuntu 16.04/18.04 x86_64用户,我们提供了非官方的DEB包供用户测试使用,下载地址参见brpc-rs主页。

其次需要确保brpc-rs依赖的C/C++项目。如果您已经成功编译了brpc,那么下列依赖应该是已经正确安装了:

fumMrqj.png!web

使用brpc-rs需要在Cargo.toml中添加以下包:

IBrA7fq.png!web

余下步骤可参考brpc-rs项目主页的”快速上手"/"Quickstart"章节。我们欢迎用户积极试用,提供宝贵意见。

ZBNfamj.jpg!web 如何获取brpc-rs文档和示例代码

brpc-rs项目的API文档位于: https://mesalock-linux.github.io/brpc-rs-docs/brpc_rs/index.html

brpc-rs提供了一个EchoService的示例,位于examples目录下。用户可以使用如下命令构建和运行:

qy2Unay.png!web

ZBNfamj.jpg!web 写在最后

brpc-rs大量借鉴了MesaLink项目中构建安全跨语言FFI接口的经验,在百度安全提出的混合内存安全架构下实现了Rust与C++之间的安全跨语言调用。此次发布的brpc-rs项目,作为MesaTEE的子项目,旨在通过开源开放推动通用安全计算生态发展,为大数据和AI带来的技术生产力革命提供信任保障的基础支持,充分解决跨部门公司之间的安全数据交换问题,从而推动AI业务在各行各业中落地。

更多内容请移步:

  • brpc-rs项目主页: https://github.com/mesalock-linux/brpc-rs

  • 点击“阅读原文”进入brpc-rs项目主页

R3MNneQ.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK