Golang之远程过程调用--gRPC-go库的使用

      之前我在做自己的项目的时候只是做简单的socket编程或者是http编程,做的基本是直接发起一个网络请求,把请求的数据发送到后端,然后后端接收到这些数据并进行处理,再将结果封装成响应数据返回给前端去接收并解析、渲染等。但远程过程调用确是另一回事,它不仅仅是发送数据给远端,而是直接调用远端的代码来执行。举个例子:网络中存在A和B两台不同的主机,A主机跑的代码a调用某个名为abc的方法,这时候abc方法通过网络请求访问B主机跑的代码中某个名为abc的方法(我们称之为“服务”),B主机的abc方法在接收到方法参数之后进行解析处理,然后返回给A主机,这时候A主机接收到内容之后又再次进行处理,并完成功能,这个过程就完成了A主机访问B主机的代码。虽然看起来还是跟上面一开始提到的socket编程或者http编程,但这里面是有实质性区别的:socket编程和http编程是客户端单纯传递数据给服务端,服务端接收并处理,最后返回响应数据给客户端。远程过程调用(Remote Procedure Call)是客户端通过网络直接调用服务端的服务(代码)直接处理。
      在正式写代码之前我们需要安装一些扩展,也就是go语言开发所需的依赖包以及开发过程中所需要的名为protoc的工具。
      为什么在这里要提到protoc工具呢?先说说Protocol Buffer,它和Json、Xml一样都是一种数据格式,不过Protocol Buffer会编译成二进制数据流,也就说它作为数据传输的实质是二进制数据流,众所周知计算机在处理数据的时候处理二进制数据流的效率是最高的,因此使用它来做数据交换是一种高效的方案。protoc就是一个编译工具,可以将.proto文件进行编译成其他编程语言的文件,具体是什么要看你下的什么版本的工具了。
      protoc下载地址
在这里插入图片描述
下载完整个protoc的压缩文件后就解压到指定的目录,如下:
在这里插入图片描述
接着进入bin目录可以看到一个可执行文件:
在这里插入图片描述
这个工具就是我们用来编译.proto文件的工具,为了方便后面的命令操作,直接将该bin目录所在路径添加进环境变量path中。然后在命令行中输入protoc --verison,若可以查看protoc工具的版本则表示安装成功。
在这里插入图片描述
因为我们需要用该工具去编译.proto文件成go文件,因此需要安装插件。(为避免包冲突,我们先安装gRpc-go依赖库的包)

gRPC-go依赖库安装:

如果你的网络能够访问google官网的话可以用:
go get -­u ­-v google.golang.org/grpc

如果被墙了的话就用下面的方法一个一个下载包:($GOPATH只的是你的gopath所指定的目录)
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net 
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text 
git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
cd $GOPATH/src/
go install google.golang.org/grpc
这些安装的都是一些关于grpc的和对protobuf的支持。

前面protoc工具已经安装完成了,但是现在它还不能编译成go文件,所以我们需要安装一个go插件:

如果可以访问的话直接安装:
go get ­-u github.com/golang/protobuf/protoc­-gen-­go
如果访问不了则:(src是gopath下的src目录)
mkdir ­p src/google.golang.org/
cd src/google.golang.org
git clone https://github.com/google/go-­genproto
git clone https://github.com/google/genproto

这样一来所有的go开发所需要的的依赖包、protoc工具插件go扩展就全部安装完毕了,接下来进入开发环节。(Tip:上面的命令有一些是重复的,不用管,直接这么走就

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值