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

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

阅读 216
评论
    3 个回答
    • 196

    可以建一个专门的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, 不管是客户端还是服务端

          撰写回答

          登录后参与交流、获取后续更新提醒