V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
cookgo
V2EX  ›  Go 编程语言

Golang 微服务工程最佳实践问题

  •  
  •   cookgo · 2021 年 3 月 17 日 · 4127 次点击
    这是一个创建于 1761 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位老司机在使用 golang 开发微服务的时候,假设一个微服务一个 gomod,那么在使用 git 管理源代码的时候,是一个 git 仓库下一个微服务,还是多个微服务放在同一个仓库下?

    19 条回复    2021-04-02 11:13:05 +08:00
    Mitt
        1
    Mitt  
       2021 年 3 月 17 日
    一个微服务一个仓库,微服务之间是互相独立的
    mcfog
        2
    mcfog  
       2021 年 3 月 17 日 via Android
    多对多,仓库是多个,每个仓库下也可以有多个(互相关联的)微服务
    huijiewei
        3
    huijiewei  
       2021 年 3 月 17 日
    git sub tree
    linvon
        4
    linvon  
       2021 年 3 月 17 日
    都可以。。。看服务间相关性吧,我们的代码太老导致重构完大量服务都是在一个仓库。但实际上还是建议能拉新仓库就拉新仓库,因为很有可能出现不同服务需要引用同一个三方库不同版本的问题
    xuanbg
        5
    xuanbg  
       2021 年 3 月 17 日
    一个服务一个仓库
    goxy
        6
    goxy  
       2021 年 3 月 17 日
    看维护的人力。我们小公司都在一个仓库里,然后不同目录。CI 、CD 不同 pipeline
    janxin
        7
    janxin  
       2021 年 3 月 17 日 via iPhone
    单体仓库的话建议只有一个 go mod
    Leigg
        8
    Leigg  
       2021 年 3 月 17 日 via Android
    最好同在一个项目下,分目录就行了,要是分仓库,那公共代码的管理能累死。
    kkbblzq
        9
    kkbblzq  
       2021 年 3 月 17 日
    我觉得吧,如果连代码都拆不清楚,那还是别跟风整微服务了,所以我支持多仓库。
    AngryPanda
        10
    AngryPanda  
       2021 年 3 月 18 日 via iPhone
    支持多仓库。清晰可控。


    @Leigg 可以专弄个 repo 管理公共代码库
    ifsclimbing
        11
    ifsclimbing  
       2021 年 3 月 18 日
    大公司都是 monorepo,比如 google,就是一个 repo
    小公司,不复杂的话可以多个
    cookgo
        12
    cookgo  
    OP
       2021 年 3 月 18 日
    还是感觉用 gitlab 一个项目组里分不同的子工程这样编写维护更方便:)
    Visionhope
        13
    Visionhope  
       2021 年 3 月 18 日
    综合考虑吧, 楼上也说了很多优缺点. 我们公司就是准备从多个仓库迁移到一个仓库.
    dongtingyue
        14
    dongtingyue  
       2021 年 3 月 18 日
    我是放一起,有些公用的可以提取出来。一个服务一个仓库感觉不是很方便。
    https://github.com/zarte/minirpc
    rahuahua
        15
    rahuahua  
       2021 年 3 月 18 日
    说多个的你们服务是不是只有个位数~
    Leigg
        16
    Leigg  
       2021 年 3 月 18 日 via Android
    @AngryPanda 就是这个方案的缺陷。
    davidyanxw
        17
    davidyanxw  
       2021 年 3 月 18 日
    支持多仓库。
    单仓库的话,一个微服务发布,其他业务是不是也得同步更新?
    rapperx2
        18
    rapperx2  
       2021 年 3 月 18 日
    支持单仓库
    sekfung
        19
    sekfung  
       2021 年 4 月 2 日
    如果有权限要求,建议多仓库,比如不是该模块的开发人员,不允许修改提交。

    git 跟 svn 的区别在于,git 原生没有 svn 那样可以针对目录级别的权限控制,当然理论上服务端可以写 git hook 做到,但是麻烦得多
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:17 · PVG 12:17 · LAX 20:17 · JFK 23:17
    ♥ Do have faith in what you're doing.