本文来自知乎: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!,既然官方不支持,那么民间有么有实现呢?一番搜索之后,找到了下面的实现:https://github.com/tikv/grpc-rshttps://github.com/stepancheg/grpc-rusthttps://github.com/tower-rs/tower-grpchttps://github.com/tokenio/grpc-actixhttps://github.com/hyperium/tonic下面来简单介绍一下这些实现。1、tikv的grpc-rs实现关于这个实现的历史其实可以去看下面这篇文章:TiDB与gRPC的那点事-InfoQwww.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是四个月之前,不建议生产环境使用。 4. grpc-actix应该是基于actix生态实现的,目前也已经停更,不建议使用。5. tonic起初只找到了上面的四个库,但是赶脚都不太满意,然后突然想到去看看libra里使用了什么rpc框架,于是去翻了翻libra的仓库,被我发现了tonic。然后去看看一下tonic的github,native的rust实现,async/await支持,star数也是这几个实现中最多的,然后作者也在积极更新中,于是我选择相信libra团队的眼光。暂时就先写这么多吧~,刚开始写文章,写的不好的地方请各位多多批评指教~~ 完整内容,请移步:https://zhuanlan.zhihu.com/p/103947532