Leong's blog Leong's blog
首页
  • 编程
  • 资源
  • Golang
  • 微服务
  • vue
  • 操作系统
  • 数据结构与算法
  • Linux
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Leong Y

跑起来吧
首页
  • 编程
  • 资源
  • Golang
  • 微服务
  • vue
  • 操作系统
  • 数据结构与算法
  • Linux
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • docker简明教程
  • go-micro简明教程
  • grpc简明案例
  • Protocol Buffers学习
    • 1、什么是Protocol Buffers?
    • 2、编译器
    • 3、插件
    • 4、Protocol Buffers 常用概念
    • 5、代码生成
      • 目录结构
      • 生成命令
  • K8S
  • 容器部署
  • 微服务
leong
2024-07-03
目录

Protocol Buffers学习

# Protocol Buffers学习

# 1、什么是Protocol Buffers?

Protocol Buffers(简称 Protobuf)是由谷歌开发的一种用于序列化结构化数据的方法。它是一种语言中立、平台中立、可扩展的机制,用于高效地序列化数据格式

定义:

  • 是一种轻便高效的序列化结构化数据协议
  • 通常用在存储数据和需要远程数据通信的程序上

目的:

  • 加速站点之间数据传输速度
  • 解决数据传输不规范问题

# 2、编译器

Protobuf 提供了一个编译器 protoc,可以将 .proto 文件编译成不同编程语言的代码(如 C++、Java、Python、Go 等),以便在程序中使用这些数据结构。

protoc安装

wget
https://github.com/protocolbuffers/protobuf/releases/download/v27.1/protoc-27.1-linux-x86_64.zip
unzip protoc-27.1-linux-x86_64.zip
mv bin/protoc /usr/local/bin
1
2
3
4

用protoc --version检查是否安装成功

# 3、插件

protocol buffer编译器需要一个插件来根据提供的proto文件生成代码,应对不同的语言或者框架我们要下载对应的插件才能生成其代码

golang插件

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
1

grpc插件

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
1

micro插件

go install github.com/go-micro/generator/cmd/protoc-gen-micro@latest
1

# 4、Protocol Buffers 常用概念

  • Message:描述一个请求或响应的消息格式
  • 字段标识:消息的定义中,每个字段都有一个唯一的数值标签
  • 常用数据类型:double,float,int32/64,bool,string,bytes
  • Service服务定义:在Service中可以定义一个RPC服务接口

例如:

syntax = "proto3";

package book;

// 声明生成Go代码的导入路径(import path)
option go_package = "./book";

message Price {
    int64 market_price = 1;  // 建议使用下划线的命名方式
    int64 sale_price = 2;
}

service BookService{
  rpc Sell(Price) returns (Price);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 5、代码生成

# 目录结构

demo
└── proto
    └── book
        └── price.proto
1
2
3
4

# 生成命令

生成go代码

protoc --proto_path=proto --go_out=proto book/price.proto
1
  • --proto_path=proto 表示从proto目录下读取proto文件。
  • --go_out=proto 表示生成的Go代码保存的路径。

生成grpc代码

protoc --proto_path=proto\
	   --go_out=proto\
	   --go-grpc_out=proto\
	   book/price.proto
1
2
3
4

生成micro代码

protoc --proto_path=proto\
	   --micro_out=proto\
	   --go_out=proto\
	   book/price.proto
1
2
3
4
上次更新: 2024/07/08, 18:19:51
grpc简明案例
K8S

← grpc简明案例 K8S→

最近更新
01
vue3快速上手
07-31
02
程序从加载到运行的过程
07-08
03
进程、线程、协程
07-08
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Leong Y | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式