RPC
各个服务之间的调用, 需要统一的协议. Protobuf 和 Thrift 都是做类似的功能的, 目前感觉 Protobuf 好像使用的更广泛一些.
安全编译软件, 依赖库
编译支持 golang 的 Protobuf 程序, 需要安装 protoc
和 protoc-gen-go
安装 protoc
到 https://github.com/protocolbuffers/protobuf/releases/latest
下载系统对应的最新版本.
安装 proto-gen-go
1 | go install google.golang.org/protobuf/cmd/protoc-gen-go |
将 $GOBIN
(默认 $GOPATH/bin
) 写入环境变量 $PATH
.
定义 Protobuf 文件
service.go
1 | syntax = "proto3"; |
编译
1 | protoc service.proto --go_out=./pb |
使用
1 | // 错误 |
错误写法会报错, too few values in struct initializer, 解决方案就是初始化的时候显示使用属性名, 这样增加后期重新排序, 增加字段等的可扩展性.
VSCode 保存格式化提示缺少 clang-format 命令
mac 安装 clang-format
, 注意不是 vscode 的 clang-format
插件.
1 | brew install clang-format |
参考: Clang 11 文档