Rust与gRPC的那些事

Posted Rust语言中文社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust与gRPC的那些事相关的知识,希望对你有一定的参考价值。

本文来自知乎:https://zhuanlan.zhihu.com/p/103947532
作者:Praying

这篇文章准备写一写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中的性能测试:
更多详情请见 brpc的benchmark
当然我不是有意在黑gRPC,它还是有很多优点的,比如多语言支持,在gRPC的官网中,就提供了下面这些语言的支持:
Rust与gRPC的那些事
很显然,这些语言不包括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是四个月之前,不建议生产环境使用。
Rust与gRPC的那些事

4. grpc-actix
应该是基于actix生态实现的,目前也已经停更,不建议使用。
5. tonic
起初只找到了上面的四个库,但是赶脚都不太满意,然后突然想到去看看libra里使用了什么rpc框架,于是去翻了翻libra的仓库,被我发现了tonic。
然后去看看一下tonic的github,native的rust实现,async/await支持,star数也是这几个实现中最多的,然后作者也在积极更新中,于是我选择相信libra团队的眼光。
暂时就先写这么多吧~,刚开始写文章,写的不好的地方请各位多多批评指教~~

完整内容,请移步:https://zhuanlan.zhihu.com/p/103947532

以上是关于Rust与gRPC的那些事的主要内容,如果未能解决你的问题,请参考以下文章

c++那些事程序运行时内存的划分与使用

密码学与python的那些事

关于DevOps 的那些事

统计挖掘那些事那些情-回归分析spss

Kafka用Zookeeper所做的那些事

HTTP与HTTPS握手的那些事