Go gRPC环境安装教程示例详解

作者:烟花易冷人憔悴 时间:2024-02-17 06:48:36 

前言

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。

gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制,它的作用与 XML、json 类似,但它是二进制格式,性能好、效率高(缺点:可读性差)。

安装 protobuf

1.下载地址:https://github.com/protocolbuffers/protobuf/releases

根据自身电脑的操作系统,选择最新的releases版本下载

Go gRPC环境安装教程示例详解

2.解压后在bin目录找到protoc.exe,然后把它复制到GOBIN目录下

一般操作是把protoc.exe所在的目录配到环境变量里,这里直接把protoc.exe复制到GOBIN目录下,前提是环境变量已经配置了GOBIN环境变量。

3.打开cmd,运行protoc --version

成功打印当前版本信息证明安装成功了。

安装相关包

安装 golang 的proto工具包

go get -u github.com/golang/protobuf/proto

安装 goalng 的proto编译支持

go get -u github.com/golang/protobuf/protoc-gen-go

安装 gRPC 包

go get -u google.golang.org/grpc

创建并编译proto文件

1.新建proto文件夹,在里面新建simple.proto文件

syntax = "proto3";// 协议为proto3
package proto;
// 定义发送请求信息
message SimpleRequest{
   // 定义发送的参数
   // 参数类型 参数名 标识号(不可重复)
   string data = 1;
}
// 定义响应信息
message SimpleResponse{
   // 定义接收的参数
   // 参数类型 参数名 标识号(不可重复)
   int32 code = 1;
   string value = 2;
}
// 定义我们的服务(可定义多个服务,每个服务可定义多个接口)
service Simple{
   rpc Route (SimpleRequest) returns (SimpleResponse){};
}

2.编译proto文件

cmd进入simple.proto所在目录,运行以下指令进行编译

protoc --go_out=plugins=grpc:./ ./simple.proto

VSCode-proto3插件介绍

使用VSCode的朋友看这里,博主介绍一个VSCode插件,方便对编辑和编译proto文件。

  • 扩展程序中搜索 VSCode-proto3,然后点击安装。

  • 在设置中找到setting.json文件,添加vscode-proto3插件配置

// vscode-proto3插件配置
   "protoc": {
       // protoc.exe所在目录
       "path": "C:\\Go\\bin\\protoc.exe",
       // 保存时自动编译
       "compile_on_save": true,
       "options": [
           // go编译输出指令
           "--go_out=plugins=grpc:."
       ]
   }

每次编辑完proto文件后,只需要保存,它就会自动帮助完成编译。而且代码有高亮显示,代码自动补全,代码格式化等功能。

Go gRPC环境安装教程示例详解

教程源码地址:https://github.com/Bingjian-Zhu/go-grpc-example

来源:https://www.cnblogs.com/FireworksEasyCool/p/12669371.html

标签:Go,gRPC,环境安装,教程
0
投稿

猜你喜欢

  • Python Asyncio 库之同步原语常用函数详解

    2021-04-27 03:50:39
  • python实现批量文件重命名

    2021-03-25 22:04:38
  • python调用接口的4种方式代码实例

    2022-01-15 17:03:30
  • Python 数据结构之树的概念详解

    2021-06-24 17:08:25
  • Django项目中动态设置静态文件路径的全过程

    2021-07-12 00:52:24
  • 浅谈python输出列表元素的所有排列形式

    2023-02-10 11:09:39
  • C#实现根据实体类自动创建数据库表

    2024-01-12 13:23:29
  • 如何将Python脚本打包成exe应用程序介绍

    2021-12-26 20:42:07
  • BOM中location对象的属性和方法

    2024-04-16 09:55:07
  • JS添加或删除HTML dom元素的方法实例分析

    2024-04-29 13:24:59
  • php验证session无效的解决方法

    2023-08-15 06:52:39
  • Go并发编程中sync/errGroup的使用

    2024-02-05 04:40:56
  • js实现网页加载loading的显示

    2007-11-06 12:11:00
  • thinkPHP学习笔记之安装配置篇

    2023-09-27 18:32:03
  • python实现微信防撤回神器

    2022-03-14 14:22:04
  • 由浅入深漫谈margin属性

    2007-05-11 17:03:00
  • ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解

    2023-11-22 08:18:27
  • 安装MSDE2000提示为了安全起见,要求使用强 SA 密码的解决方法

    2024-01-14 08:49:09
  • 解析Oracle数据库中的对象集合schema

    2023-07-22 20:42:34
  • 利用python实现命令行有道词典的方法示例

    2021-03-24 06:32:16
  • asp之家 网络编程 m.aspxhome.com