〇、前言
最近在学习gRPC的有关内容,试图搭建一个小demo,在这里我做一个简单的记录。
一、gRPC是什么
在知道gRPC是什么之前,先了解一个概念,RPC是什么?其全称为远程过程调用(Remote Procedure Call),是一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,开发人员无需为这个交互作用编程。RPC是一种Client-Server模式,经典实现是一个通过【发送请求-接受回应】进行信息交互的系统。
gRPC是一种现代化开源的高性能RPC框架,由谷歌公司开发,使用HTTP/2作为传输协议。
-
功能:客户端可以像调用本地方法一样直接调用其他机器上的服务端应用程序的方法,帮助开发人员更容易创建分布式应用程序和服务。
-
具体实现:gRPC定义一个服务,指定一个可以远程调用的带有参数和返回类型的方法,在服务端程序中实现这个接口并且运行gRPC程序处理客户端调用,在客户端,有一个web提供和服务端相同的方法。(如何理解相同???)
二、为什么要用gPRC
使用gRPC, 我们可以一次性的在一个.proto文件中定义服务并使用任何支持它的语言去实现客户端和服务端,反过来,它们可以应用在各种场景中,从Google的服务器到你自己的平板电脑—— gRPC帮你解决了不同语言及环境间通信的复杂性。使用protocol buffers还能获得其他好处,包括高效的序列号,简单的IDL以及容易进行接口更新。总之一句话,使用gRPC能让我们更容易编写跨语言的分布式代码。
三、如何实现
gRPC开发分为三步:
- 编写.proto文件,生成指定语言源代码
- 编写服务端代码
- 编写客户端代码
工欲善其事必先利其器,先去安装用于生成gRPC服务代码的协议编译器,链接给出,我是win64版本,各位自己选择对应版本即可,点击链接下载即可。Protocol Buffers v3
下载完成后解压,将二进制文件的路径添加到环境变量中去。
接下来执行下面的命令安装protoc的Go插件:
go get -u github.com/golang/protobuf/protoc-gen-go
编译插件protoc-gen-go将会安装到 G O B I N , 默 认 是 GOBIN,默认是 GOBIN,默认是GOPATH/bin,它必须在你的$PATH中以便协议编译器protoc能够找到它。