gRPC是什么?
gRPC是什么可以用官网的一句话来概括
A high-performance, open-source universal RPC framework
所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。如下图所示就是一个典型的RPC结构图。
与HTTP(Restful API)对比,gRPC的优势
gRPC和restful API都提供了一套通信机制,用于server/client模型通信,而且它们都使用http作为底层的传输协议(严格地说, gRPC使用的http2.0,而restful api则不一定)。不过gRPC还是有些特有的优势,如下:
gRPC可以通过protobuf来定义接口,可以有更加严格的接口约束条件,支持多种语言。
protobuf可以将数据序列化为二进制编码,这会大幅减少需要传输的数据量,从而大幅提高传输速度。
gRPC可以支持streaming流式通信(http2.0),提高传输速度。
扩展:
Protobuf:
Protobuf 实际是一套类似Json或者XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用。
相比较而言,Protobuf有如下优点:
足够简单
序列化后体积很小:消息大小只需要XML的1/10 ~ 1/3
解析速度快:解析速度比XML快20 ~ 100倍
多语言支持
更好的兼容性,Protobuf设计的一个原则就是要能够很好的支持向下或向上兼容
http2.0:
理论上通过http2.0就可以使用streaming模式, 但是通常web服务的restful api似乎很少这么用,通常的流式数据应用如视频流,一般都会使用专门的协议如HLS,RTMP等,这些就不是我们通常web服务了,而是有专门的服务器应用。
————————————————
版权声明:本文为CSDN博主「敬勤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40133108/article/details/110000930
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/notes/294595.html