我正在使用 Go 使用 gRPC 服務器,我了解 gRPC/Protobuf 的好處之一是您可以使用它通過使用服務器代碼中使用的相同消息/服務 API 輕松創(chuàng)建客戶端庫.如果我正在為我的服務實現一個客戶端庫,它顯然需要導入服務代碼和 API,所以我最終會有一個服務、一個服務器和一個客戶端組件。在生產級代碼中 - 所有這些組件是否應該存在于同一個存儲庫中并且僅由 go 包分隔?該服務是否應該是它自己的存儲庫并作為任何希望為該服務實現服務器/客戶端庫的人的依賴項?
2 回答

繁花如伊
TA貢獻2012條經驗 獲得超12個贊
所有這些組件是否應該存在于同一個存儲庫中并且僅由 go 包分隔?
各種 gRPC 組件不需要都存在于同一個 repo 中。
該服務是否應該是它自己的存儲庫并作為任何希望為該服務實現服務器/客戶端庫的人的依賴項?
我使用以下回購組織:
myapp-proto(通用倉庫;客戶端和服務器都標記和使用的 git)
我的應用程序客戶端
我的應用服務1
我的應用服務2
我的應用服務3
例如,從各種數據源(REST API、MySQL、LDAP 等)中提取數據的幾個 gRPC 服務——這些服務器 gRPC 服務中的每一個都存在于它們自己的存儲庫中。有一個 gRPC 客戶端包也存在于它自己的存儲庫中。為了保持變更控制的健全,通用proto
定義(和生成的 go 代碼)存在于單獨的單個 repo 中。
上述設置利用git 版本標記和go 模塊來確??蛻舳撕退蟹掌鞫际褂眉嫒莅姹镜?gRPC 消息/服務。向 gRPC 添加方法/字段proto
可以獨立于客戶端/服務器部分完成 - 并在成熟時分階段進行。

波斯汪
TA貢獻1811條經驗 獲得超4個贊
根據我的經驗,最好的方法是將原型定義和生成的文件保存在服務器上。我通常將它們放入{SERVER}/pkg/grpc
,然后{CLIENT}/internal/services/{SERVER}/grpc
根據您的項目結構將它們導入客戶端或類似的東西。
- 2 回答
- 0 關注
- 272 瀏覽
添加回答
舉報
0/150
提交
取消