gRPC学习之二:GO的gRPC开发环境准备

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

RPC学习系列文章链接

  1. 在CentOS7部署和设置GO
  2. GO的gRPC开发环境准备
  3. 初试GO版gRPC开发
  4. 实战四类服务方法

本篇概览

  • 本文《gRPC学习》系列的第二篇,前文在CentOS7环境装好了GO,接下来要把gRPC开发环境准备好,总的来说一共三步:
    在这里插入图片描述

安装protoc

  1. protoc是编译工具,安装方式是下载二进制文件,直接复制粘贴以下命令执行即可:

    mkdir -p $GOPATH/bin
    && mkdir ~/temp-protoc-download
    && wget https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/protoc-3.14.0-linux-x86_64.zip -O ~/temp-protoc-download/protoc.zip
    && cd ~/temp-protoc-download
    && unzip protoc.zip
    && cp ./bin/protoc $GOPATH/bin/
    && cd ~/
    && rm -rf ~/temp-protoc-download

  2. 执行protoc --version检查protoc安装是否成功:

    [golang@centos7 ~]$ protoc --version libprotoc 3.14.0

安装protoc-gen-go和grpc包遇到的问题

  • 实际证明,用go get命令安装protoc-gen-go和grpc包的时候经常提示网络错误,于是我写了个shell脚本,将protoc-gen-go和grpc包的源码从GitHub下载下来,在本地编译构建,达到go get安装相同的效果;
  • 使用git clone命令下载源码比较耗时(文件数量太多),因此我写的脚本是下载对应的源码包(zip文件),再解压,和git clone效果相同但是耗时减少很多;
  • 因此,接下来的操作是一个脚本完成protoc-gen-go和grpc包的安装;

安装protoc-gen-go和grpc包

  1. 执行以下命令即可完成protoc-gen-go和grpc包的安装:

    curl -o install-grpc.sh
    https://raw.githubusercontent.com/zq2599/blog_demos/master/files/install-grpc.sh
    && chmod a+x ./install-grpc.sh
    && ./install-grpc.sh

  2. 控制台输出以下信息,无错误,表示安装成功:

    ... install protoc-gen-go go: downloading google.golang.org/protobuf v1.23.0 install grpc clear resource install finish

  3. 在$GOPATH/bin目录可见protoc-gen-go:

    [golang@centos7 ~]$ cd $GOPATH/bin [golang@centos7 bin]$ ls protoc protoc-gen-go

  • 至此,gRPC开发环境已经准备完毕,下一篇可以开始实战了;

安装脚本一览

protoc-gen-go和grpc包的安装过程都在install-grpc.sh中完成,该脚本内容如下所示,可见都是些很简单的操作:下载源码、解压、构建

1#!/bin/bash 2 3mkdir ~/temp-grpc-install 4 5echo "clear old files" 6rm -rf $GOPATH/src/google.golang.org/grpc 7rm -rf $GOPATH/src/golang.org/x 8rm -rf $GOPATH/src/google.golang.org/protobuf 9rm -rf $GOPATH/src/github.com/golang/protobuf 10rm -rf $GOPATH/src/google.golang.org/genproto 11 12echo "create directory" 13mkdir -p $GOPATH/src/google.golang.org/ 14mkdir -p $GOPATH/src/golang.org/x 15mkdir -p $GOPATH/src/github.com/golang/ 16 17echo "1. grpc" 18cd ~/temp-grpc-install 19wget https://github.com/grpc/grpc-go/archive/master.zip -O grpc-go.zip 20unzip grpc-go.zip -d $GOPATH/src/google.golang.org/ 21cd $GOPATH/src/google.golang.org/ 22mv grpc-go-master grpc 23 24echo "2. x/net" 25cd ~/temp-grpc-install 26wget https://github.com/golang/net/archive/master.zip -O net.zip 27unzip net.zip -d $GOPATH/src/golang.org/x/ 28cd $GOPATH/src/golang.org/x/ 29mv net-master net 30 31echo "3. x/text" 32cd ~/temp-grpc-install 33wget https://github.com/golang/text/archive/master.zip -O text.zip 34unzip text.zip -d $GOPATH/src/golang.org/x/ 35cd $GOPATH/src/golang.org/x/ 36mv text-master text 37 38echo "4. protobuf-go" 39cd ~/temp-grpc-install 40wget https://github.com/protocolbuffers/protobuf-go/archive/master.zip -O protobuf-go.zip 41unzip protobuf-go.zip -d $GOPATH/src/google.golang.org/ 42cd $GOPATH/src/google.golang.org/ 43mv protobuf-go-master protobuf 44 45echo "5. protobuf" 46cd ~/temp-grpc-install 47wget https://github.com/golang/protobuf/archive/master.zip -O protobuf.zip 48unzip protobuf.zip -d $GOPATH/src/github.com/golang/ 49cd $GOPATH/src/github.com/golang/ 50mv protobuf-master protobuf 51 52echo "6. go-genproto" 53cd ~/temp-grpc-install 54wget https://github.com/google/go-genproto/archive/master.zip -O go-genproto.zip 55unzip go-genproto.zip -d $GOPATH/src/google.golang.org/ 56cd $GOPATH/src/google.golang.org/ 57mv go-genproto-master genproto 58 59echo "7. x/sys" 60cd ~/temp-grpc-install 61wget https://github.com/golang/sys/archive/master.zip -O sys.zip 62unzip sys.zip -d $GOPATH/src/golang.org/x/ 63cd $GOPATH/src/golang.org/x 64mv sys-master sys 65 66echo "install protoc-gen-go" 67cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go/ 68go build 69go install 70 71echo "install grpc" 72 73cd $GOPATH/src/ 74go install google.golang.org/grpc 75 76echo "clear resource" 77cd ~/ 78rm -rf ~/temp-grpc-install 79 80echo "install finish"

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界…

本文同步分享在 博客“程序员欣宸”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )