怎么看待谷歌今年开源的RPC框架GRPC

发布网友

我来回答

2个回答

懂视网

GRPC是一个高性能、开源、通用的RPC框架,面向移动和HTTP/2设计,是由谷歌发布的首款基于Protocol Buffers的RPC框架。 目前提供C、Java和Go语言版本,这三个版本的源码全都托管在Github上,分别是:grpc,grpc-java,grpc-go。其中C版本支持C,C++,Node.js,P

GRPC是一个高性能、开源、通用的RPC框架,面向移动和HTTP/2设计,是由谷歌发布的首款基于Protocol Buffers的RPC框架。


目前提供C、Java和Go语言版本,这三个版本的源码全都托管在Github上,分别是:grpc, grpc-java, grpc-go。其中C版本支持C,C++,Node.js,Python,Ruby,Objective-C,PHP 和 C#。

GRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

服务接口定义实例

使用Protocol Buffers来定义服务:

message HelloRequest {
 string greeting = 1;
}

message HelloResponse {
 string reply = 1;
}

service HelloService {
 rpc SayHello(HelloRequest) returns (HelloResponse);
}

Protocol Buffers简称protobuf是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python等三种编程语言,但可以找到大量的几乎涵盖所有语言的第三方拓展包。

热心网友

缺点:目前版本来说实测性能肯定是差thrift一截的(实测grpc0.8版本).应该就是缺点吧,虽然用了netty和protobuf 优点:采用HTTP2的好处在于,因为添加了头信息,可以方便在框架层面对调用做拦截和控制(比如说限流,调用链分析,安全认证等) 而且http2为标准协议,也方便以后扩展兼容其它调用端 不过目前的grpc虽然支持了拦截,但是Header信息和消息体是分离的,而且暂时没法控制方法执行与否,所以很多功能还不能实现 (主要是没能从protobuf层面解决Header的问题) 另外,使用grpc既要安装protobuf又要使用maven或gradle的生成xxxGRPC的插件,实在麻烦,而且 client_to_server client_to_server_streaming server_to_client_streaming bidirectional_streaming 几类调用方式实现的API也过于繁琐 所以综合起来目前我们在自己的分布式服务框架里使用的时自己实现的infogen-rpc框架,如果后面的release版本确实好用或许会换回来吧,毕竟grpc的多语言还是做得不错

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com