登录
首页 >  Golang >  Go问答

如何维护原始文件?

来源:Golang技术栈

时间:2023-04-06 14:22:21 418浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何维护原始文件?》,这篇文章主要讲到golang等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我创建了 3 个 proto 文件,并希望将其保存在 git repo 中:

在此处输入图像描述

与所有其他文件分开。 存储库仅包含.proto文件。我有 3 个微服务,每个微服务都有自己的存储库,使用这些 proto 文件相互通信:

在此处输入图像描述

您可以在上图中看到,proto 文件正在从不同的微服务中使用。

假设,我要更改 Protofile2 并将更改推送到proto存储库,请记住 proto 文件存储库与微服务存储库分开:

在此处输入图像描述

当我go testservice1service2 上运行时,它应该告诉我, Protofile2 已更改或没有与 service2 文件夹中的 proto 文件相同的哈希:
在此处输入图像描述

我必须再次生成代码。

是否存在任何解决问题的工具?或者我应该如何解决?

正确答案

这是我的建议:

  • 将您的原型(及其生成的 makefile)存储在单个 git 存储库中。为了简化导入,每个定义都应该在它们自己的目录中
  • 用版本标记 repo - 尤其是在潜在的重大更改上
  • 从您的微服务中导入特定的 proto defs,例如import "github.com/me/myproto/protodef2"
  • 使用 go modulesgo v1.112019 年引入)确保微服务 X 获得兼容版本的 protobuf Y

第 2 点——正如@PaulHankin 提到的——尽量不要破坏向后兼容性。可以删除 Protobuf 字段,但只要剩余的字段索引不变,旧的客户端调用仍将与较新的 proto defs 兼容。

今天带大家了解了golang的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>