您的位置 首页 golang

学习笔记-GRPC简单理解

GRPC是什么

官方介绍:A high-performance, open-source universal RPC framework。

RPC

介绍GRPC之前,我们先简单了解一下RPC。RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简单地说,类似于远程访问或者Web请求服务,都是一个client向远端服务器请求服务返回结果的过程,但是web请求使用的网络协议是http高层协议,而rpc所使用的协议多为TCP,是网络层协议,减少了信息的包装,加快了处理速度。(具体请看 )

GRPC简述

GRPC是Google开发的一款高性能、跨语言的RPC框架,使用Google的数据序列化框架protobuf作为IDL(接口定义语言)跨语言的服务接口定义,以及数据序列化。在通信层面基于HTTP2.0实现,带来诸如双向流、流控、头部压缩、单 TCP连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。这是与大多数RPC框架基于TCP实现不一样的,主要原因是HTTP2.0在性能方面有了比较大的提升。除此之外,GRPC的设计的其中一个目的就是提供移动客户端与服务端的RPC调用,所以基于HTTP协议实现可以应对TCP层面会遇到的内网防火墙问题。

GRPC特性

GRPC主要有三大特性基于HTTP 2.0,IDL使用ProtoBuf ,多语言支持

基于HTTP 2.0

HTTP 2.0 提供了连接多路复用、双向流、服务器推送、请求优先级、首部压缩等机制。可以节省带宽、降低TCP连接次数、节省CPU,帮助移动设备延长电池寿命等。GRPC 的协议设计上使用了HTTP 2.0 现有的语义,请求和响应的数据使用HTTP Body 发送,其他的控制信息则用Header 表示。

IDL使用ProtoBuf

GRPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议(类似于XML、JSON、hessian)。ProtoBuf(具体请看 )能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。压缩和传输效率高,语法简单,表达力强。

多语言支持

GRPC支持多种语言(C, C++, Python, PHP, Nodejs, C#, Objective-C、Golang、Java) ,并能够基于语言自动生成客户端和服务端功能库。目前已提供了C版本GRPC、Java版本GRPC-java 和 Go版本GRPC-go,其它语言的版本正在积极开发中,其中,GRPC支持C、C++、Node.js、Python、Ruby、Objective-C、PHP和C#等语言,GRPC-java已经支持Android开发。

使用场景

需要对接口进行严格约束的情况,比如我们提供了一个公共的服务,很多人,甚至公司外部的人也可以访问这个服务,这时对于接口我们希望有更加严格的约束,我们不希望客户端给我们传递任意的数据,尤其是考虑到安全性的因素,我们通常需要对接口进行更加严格的约束。这时GRPC就可以通过protobuf来提供严格的接口约束。

对于性能有更高的要求时。有时我们的服务需要传递大量的数据,而又希望不影响我们的性能,这个时候也可以考虑GRPC服务,因为通过protobuf我们可以将数据压缩编码转化为二进制格式,通常传递的数据量要小得多,而且通过http2我们可以实现异步的请求,从而大大提高了通信效率。

GRPC的主要应用场景总结如下:

1, 低延迟、高扩展性、分布式的系统

2, 同云服务器进行通信的移动应用客户端

3, 设计语言独立、高效、精确的新协议

4, 便于各方面扩展的分层设计,如认证、负载均衡、日志记录、监控等

GRPC通信方式

GRPC有四种通信方式:

1、 Simple RPC 简单rpc:这就是一般的rpc调用,一个请求对象对应一个返回对象

2、 Server-side streaming RPC 服务端流式rpc:一个请求对象,服务端可以传回多个结果对象

3、 Client-side streaming RPC 客户端流式rpc:客户端传入多个请求对象,服务端返回一个响应结果

4、 Bidirectional streaming RPC 双向流式rpc:结合客户端流式rpc和服务端流式rpc,可以传入多个对象,返回多个响应对象

本文的初衷为学习笔记的分享,部分图文来源于网络,如侵,联系删。

文章来源:智云一二三科技

文章标题:学习笔记-GRPC简单理解

文章地址:https://www.zhihuclub.com/100924.shtml

关于作者: 智云科技

热门文章

网站地图