golang开发 rpc 应用时,对于rpc服务的目录结构如何合理规划

对于rpc服务端开发时,生成的.pb.go文件,除了服务端使用,客户端也要使用这个文件,这个文件放在什么位置才是比较合理?有无参考的目录结构?

阅读 4.2k
3 个回答

可以建一个专门的git仓库存放pb文件,这样不同的项目需要引入的时候直接引入这个包就可以,更新也方便,直接用git进行版本控制

仅供参考:
projectname
├── common
│   ├── proto
│   │   ├── xxx
│   │   │   ├── xxx.pb.go
│   │   │   └── xxx.proto
│   │   ├── yyy
│   │   │   ├── yyy.pb.go
│   │   │   └── yyy.proto
│   │   ├── zzz
│   │   │   ├── zzz.pb.go
│   │   │   └── zzz.proto
├── go.mod
├── go.sum
├── client
│   ├── grpc
│   │   ├── client.go
│   │   └── server.go
│   ├── alert
│   │   ├── alert.go
│   │   └── alert_test.go
│   └── main.go
├── server
│   ├── alert
│   │   ├── alert.go
│   ├── grpc
│   │   ├── client.go
│   │   └── server.go
│   └── main.go

将所有公共功能,比如proto的定义放到common中,在项目中引用时:
import (
"projectname/common/proto/xxx"
"projectname/common/proto/yyy"
"projectname/common/proto/zzz"
)

go.mod中:

module projectname
go 1.14
require (
   github.com/... v1.5.0         //仅供参考
)

我们是这样规划的:
如果这个项目的proto会被其他的项目引用,那么 proto 就放在 公共的proto项目里,
否则就放自己项目里,

生成的pb,自己去拉取对应的proto生成pb, 不管是客户端还是服务端

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题