V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WillingXyz
V2EX  ›  程序员

多个服务访问同一个数据库时,如何组织代码?

  •  
  •   WillingXyz · 2021-11-03 09:09:53 +08:00 · 2641 次点击
    这是一个创建于 1103 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同一个业务,有用于 app/web 的服务 A ,用于管理后台的服务 B ,用于运营后台的服务 C 。

    这三个作为单独的服务运行。

    那么代码是拆分为三个代码仓库,还是同一个代码仓库,然后内部分模块,共用 DAO 层,Service 层,比如:

    • xxx-dao
    • xxx-service
    • xxx-app app
    • xxx-admin 管理后台
    • xxx-manager 运营后台

    还是说这三个没必要作为单独的服务存在,直接在一个服务中就行。

    各位大佬是如何考虑的

    10 条回复    2021-11-04 11:36:52 +08:00
    SorcererXW
        1
    SorcererXW  
       2021-11-03 09:27:20 +08:00
    1. 一个服务连接数据库,暴露 RPC 给上游服务(前端接口、管理后台)调用
    2. 同一套代码,通过环境变量控制开启哪些功能、接口
    yidinghe
        2
    yidinghe  
       2021-11-03 09:34:31 +08:00 via Android
    那你就不能用缓存了。如果 A 缓存了记录但是 B 改了的话,A 是不知道的。
    XTTX
        3
    XTTX  
       2021-11-03 09:38:06 +08:00
    好奇你准备怎么解决 race condition.
    feitxue
        4
    feitxue  
       2021-11-03 09:53:46 +08:00
    单独两个项目,一个暴露前端的接口.一个内部使用的管理后台.
    业务都比较简单,管理平台只负责开个账号,看个报表什么的.
    这是目前我维护一个老项目.这样玩儿.问题不大.毕竟目前实际用户不到 20 个.
    业务复杂的话,并且访问量大,管理端功能也复杂的话,不建议这样玩儿.
    meeop
        5
    meeop  
       2021-11-03 10:40:30 +08:00
    怎么分都行,关键点在于数据库连接和使用的代码,表定义的代码是共享的,具体调用点分布在多少个项目都行
    xuanbg
        6
    xuanbg  
       2021-11-03 10:47:10 +08:00
    3 个项目,3 个仓库。
    sujin190
        7
    sujin190  
       2021-11-03 10:52:24 +08:00
    建议别这么拆,建立把能独立单独做 rpc 服务提供接口统一调用,比如下单、退换货、退款管理等等,其它的各自搞各自的,搞个统一的 dao 层啥的在 web 上需要经常调整需求的用处不大,而且很快你就会发现几个调用方重合度完全没想的那么高,然后又各种不注意的相互依赖慢慢出来了,最后完全失去了一开始分模块项目的目的,完全一堆大杂烩
    Huelse
        8
    Huelse  
       2021-11-03 11:02:02 +08:00
    请教下多个服务访问多个数据一致的数据库怎么解决,只能同步吗?或者是增加中间层?
    duduaba
        9
    duduaba  
       2021-11-03 20:10:53 +08:00
    想怎么拆都可以,因为拆或不拆下个人接手也是骂人。。。
    yangzzzzzz
        10
    yangzzzzzz  
       2021-11-04 11:36:52 +08:00
    我觉得还是根据业务拆开比较好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2647 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:10 · PVG 11:10 · LAX 19:10 · JFK 22:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.