grpc框架_Rust与gRPC的那些事

grpc框架_Rust与gRPC的那些事_第1张图片

这篇文章准备写一写Rust与gRPC的那些事,gRPC是什么?这里引用gRPC官网的一句介绍,

gRPC is a modern open source high performance RPC framework that can run in any environment.

直白地翻译过来就是可以运行在各种环境的现代开源高性能RPC框架。当然,关于gRPC的性能,似乎在各种RPC框架性能测试中都是被吊打的对象。比如下图中就是百度开源RPC框架brpc中的性能测试:

grpc框架_Rust与gRPC的那些事_第2张图片

更多详情请见brpc的benchmark。

当然我不是有意在黑gRPC,它还是有很多优点的,比如多语言支持,在gRPC的官网中,就提供了下面这些语言的支持:

grpc框架_Rust与gRPC的那些事_第3张图片

很显然,这些语言不包括Rust!,既然官方不支持,那么民间有么有实现呢?

一番搜索之后,找到了下面的实现:

https://github.com/tikv/grpc-rs

https://github.com/stepancheg/grpc-rust

https://github.com/tower-rs/tower-grpc

https://github.com/tokenio/grpc-actix

https://github.com/hyperium/tonic

下面来简单介绍一下这些实现。

1、tikv的grpc-rs实现

关于这个实现的历史其实可以去看下面这篇文章:

TiDB与gRPC的那点事-InfoQ​www.infoq.cn

grpc-rs出身名门(pingcap也算是个名门吧),使用的gRPC的C语言版本通过Rust进行binding,不是纯native的rust,已经在TiKV上使用,也是经过生产环境检验过的,目前github还在活跃更新,是个不错的选择。

2. grpc-rust

这个库说实话,不怎么了解,但是在reddit上看到有人介绍,原话如下:

grpc-rust is definitely the most mature and popular, but the API is clunky and un-idiomatic.

就是说这个库比较成熟和流行,但是API似乎设计的不够好,这个是native的rust实现,目前github还在积极更新中。

3. tower-grpc

据说根正苗红,作者里有mio的作者carllerche,hyper的作者seanmonstar,但是已经停更了,最近的一次commit是四个月之前,不建议生产环境使用。

grpc框架_Rust与gRPC的那些事_第4张图片

4. grpc-actix

应该是基于actix生态实现的,目前也已经停更,不建议使用。

5. tonic

起初只找到了上面的四个库,但是赶脚都不太满意,然后突然想到去看看libra里使用了什么rpc框架,于是去翻了翻libra的仓库,被我发现了tonic。

grpc框架_Rust与gRPC的那些事_第5张图片

然后去看看一下tonic的github,native的rust实现,async/await支持,star数也是这几个实现中最多的,然后作者也在积极更新中,于是我选择相信libra团队的眼光。

grpc框架_Rust与gRPC的那些事_第6张图片

暂时就先写这么多吧~,刚开始写文章,写的不好的地方请各位多多批评指教~~

引用:

brpc的github​github.com gRPC​grpc.io
grpc框架_Rust与gRPC的那些事_第7张图片
https://github.com/tikv/grpc-rs​github.com https://github.com/stepancheg/grpc-rust​github.com https://github.com/tower-rs/tower-grpc​github.com https://github.com/tokenio/grpc-actix​github.com hyperium/tonic​github.com
grpc框架_Rust与gRPC的那些事_第8张图片
使用 tower gRPC​www.jianshu.com
0f2d672b795a03f81b7ca8f4e1d874fb.png
https://www.reddit.com/r/rust/comments/aw1iog/the_state_grpc_rust/​www.reddit.com

你可能感兴趣的:(grpc框架)