前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Protocol buffer使用配置

Protocol buffer使用配置

原创
作者头像
Johns
修改2022-09-22 17:19:39
1K0
修改2022-09-22 17:19:39
举报
文章被收录于专栏:代码工具

Protocol buffers介绍

Protocol buffers 是一种语言无关、平台无关的可扩展机制或者说是数据交换格式,用于序列化结构化数据, 与 XML、JSON 相比,Protocol buffers 序列化后的码流更小、速度更快、操作更简单, 一般可用于(数据)通信协议、数据存储等

Protocol buffers 环境配置

Step1. 安装Protocol Compiler

Protobuf编译器使用的是C++实现, 我们可以通过 https://github.com/protocolbuffers/protobuf/releases自行选择需要的版本进行下载, 我这里是linux环境所以选择的是protoc-21.6-linux-x86_64.zip

代码语言:shell
复制
wget https://github.com/protocolbuffers/protobuf/releases/download/v21.6/protoc-21.6-linux-x86_64.zip
unzip protoc-21.6-linux-x86_64.zip -d protoc-21.6-linux-x86_64

# 打开环境变量配置文件
sudo vim /etc/profile

# 将当前安装地址配置到PATH
export PATH=$PATH:/root/protoc-21.6-linux-x86_64/bin
# 配置生效
source /etc/profile

# 查看是否安装成功
protoc version

Step2. 安装Go版本的Plugins

protoc编译器元素支持java, c#, c++, python, ruby,php, objectC就是没直接支持go, 所以需要安装额外的编译插件

代码语言:shell
复制
  go get google.golang.org/protobuf/cmd/protoc-gen-go
  # 查看安装的版本
  protoc-gen-go --version

案例使用

基于Protocol buffers 序列化后的码流更小、速度更快、操作更简单的特点, 一般我们会使用它来作为RPC协议的数据交换格式, 下面演示下如何通过pb文件生产具体的go代码为后面写RPC服务使用

Step1. 新建hello_world.proto 文件

代码语言:go
复制
//声明proto的版本 只有 proto3 才支持 gRPC
syntax = "proto3";
// 将编译后文件输出在当前目录
option go_package = "./";
// 指定当前proto文件属于helloworld包
package helloworld;

// 定义一个名叫 greeting 的服务
service Greeter {
  // 该服务包含一个 SayHello 方法 HelloRequest、HelloReply分别为该方法的输入与输出
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// 具体的参数定义
message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Step2. protoc 编译

protoc使用说明: $ protoc --proto_path=IMPORT_PATH --go_out=OUT_DIR --go_opt=paths=source_relative path/to/file.proto --proto_path:指定 import 路径,可以指定多个参数,编译时按顺序查找,默认查找当前目录。 --go_out:golang编译支持,指定输出文件路径, 其他语言则替换即可,比如 --java_out 等等 --go_opt:指定参数,比如--go_opt=paths=source_relative就是表明生成文件输出使用相对路径。 path/to/file.proto :被编译的 .proto 文件放在最后面

根据使用说明, 我们进入到当前hello_world.proto所在目录直接执行

代码语言:txt
复制
protoc --go_out=. hello_world.proto

最终在当前目录看到生成的hello_world.pb.go文件

image.png
image.png
编译过程

protoc 的编译过程主要分成两个步骤:

  • 1)解析 .proto 文件,编译成 protobuf 的原生数据结构保存在内存中
  • 2)把上一步内存中的 protobuf 相关的数据结构传递给相应语言的编译插件,由插件负责将接收到的 protobuf 原生结构渲染输出为特定语言的模板。
image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Protocol buffers介绍
  • Protocol buffers 环境配置
    • Step1. 安装Protocol Compiler
      • Step2. 安装Go版本的Plugins
      • 案例使用
        • Step1. 新建hello_world.proto 文件
          • Step2. protoc 编译
            • 编译过程
        相关产品与服务
        数据保险箱
        数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档