第六期GRPC分享回顾,作为一款开源rpc框架为什么高效

Posted 北京普惠互联科技有限公司

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六期GRPC分享回顾,作为一款开源rpc框架为什么高效相关的知识,希望对你有一定的参考价值。

普惠互联作为科技公司,我们从一开始就认识到人才的重要性,我们希望营造一个良好的公司文化,鼓励大家分享、沟通、表达并展示自己有趣的想法,我们把大家的成长与公司业务成长视为同等重要任务。



我们的口号是 越分享越强大;


第六期技术分享grpc话题第二次课,通过较多的讨论让参与者深度思考,从原理上理解为什么grpc是一款高效的rpc框架,高效的本质是什么,怎么开始一个人grpc工程,接下来我们做一些回顾;


gRPC 是一个高性能、开源和通用的 RPC 框架,面向服务端和移动端,基于 HTTP/2 设计。

gRPC 是由 Google 开发并开源的一种语言中立的 RPC 框架;

当前支持 C、Java 和 Go 语言,其中 C 版本支持 C、C++、 Node.js、C# 等。

https://github.com/grpc/grpc-java


实现grpc:

第六期GRPC分享回顾,作为一款开源rpc框架为什么高效

grpc实现方式:


第六期GRPC分享回顾,作为一款开源rpc框架为什么高效


grpc为什么高效小结:

gRPC之所以高效,除了在协议层使用Protobuffer之外,底层使用HTTP/2也是一个非常重要的原因。

如图:

第六期GRPC分享回顾,作为一款开源rpc框架为什么高效

Protobuffer(资料太多,简单说明优点):

传输数据量较大的需求场景下,Protocol Buffer比XML、Json 更小、更快、使用 & 维护更简单!

总的来说各种测试中表现就是快;


HTTP/2:

  • 多路复用、乱序收发:可以乱序收发数据报文,不用使用单步: 发1->收1 或者流水线: 发1->发2->收2->收1 的流程,提高效率;

  • Header压缩:不用花大量篇幅重复发送常用header,采用发送增量的方法,由客户端和服务器端共同维护一个字典;

  • stream优先级:可以在一个连接上,为不同stream设置不同优先级;

  • 服务器推送:提前发送需要的资源;


收发消息流程:

发送流程

  • 负载均衡:客户端基于负载均衡算法,从连接服务器列表中找出一个目标服务器;

  • 连接:如果到目标服务器已有连接,则使用已有连接,访问目标服务器;如果没有可用连接,则创建HTTP/2连接;

  • 编码:对请求消息使用 Protobuf做序列化,通过 HTTP/2 Stream 发送给 gRPC 服务端;

接收流程

  • 编码:接收到服务端响应之后,使用Protobuf 做反序列化;

  • 回调:回调 GrpcFuture 的 set(Response) 方法,唤醒阻塞的客户端调用线程,获取 RPC 响应。






回顾:


















扫二维码关注


普惠互联技术委员会:

努力为公司工程文化建设及技术人才发展提供有效支持。

http://www.puhuilink.com


以上是关于第六期GRPC分享回顾,作为一款开源rpc框架为什么高效的主要内容,如果未能解决你的问题,请参考以下文章

精彩回顾|「源」来如此 第六期 - 开源经济与产业投资

grpc

Golang RPC 之 gRPC

gRPC的使用

Thrift or gRPC ?Alluxio RPC框架的深度实践总结

python web框架企业实战详解(第六期)\第四课时-webpy&django