微服务设计上是否可以多数据源?有悖于微服务设计原则吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wjv22019
V2EX    Java

微服务设计上是否可以多数据源?有悖于微服务设计原则吗?

  •  1
     
  •   wjv22019 2021-04-07 19:42:32 +08:00 2743 次点击
    这是一个创建于 1697 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我订单服务 A,结算服务 B 。B 基于 A,T+1 生成数据,这时候 B 是否可以配置多数据源直接连 A 的数据库抽取数据呢?请各位大佬个建议呢?如果不建议这样做,有什么更好的实现方式呢?

    10 条回复    2021-04-09 17:46:26 +08:00
    crclz
        1
    crclz  
       2021-04-07 19:51:27 +08:00
    微服务的设计原则是不同微服务之间不共享数据源,只通过明确定义的 HTTP 接口(或类似的接口)进行协作。

    破坏这种方式的后果:

    坏处:
    1a. 带来团队沟通或管理上的混乱
    1b. 团队间迭代的节奏被卡住,造成生产力下降。例如,团队 2 的逻辑基于团队 1 数据源中的表结构,一旦团队 1 要变更表结构,会非常麻烦。

    好处:
    2a. 简化开发,减少短期内的开发时间
    2b. 直接访问数据源,性能好
    securityCoding
        2
    securityCoding  
       2021-04-07 19:58:27 +08:00 via Android
    这样的话还搞啥微服务,一张宽表聚合了事
    wjv22019
        3
    wjv22019  
    OP
       2021-04-07 20:03:09 +08:00
    @crclz 谢谢!
    a719114136
        4
    a719114136  
       2021-04-07 20:05:32 +08:00
    如果是初中期的项目可以直连数据源,好处就是方便,不用依赖于其他人开发,能快速上线。

    如果是后期的项目,服务的拆分也已经比较细化,这时就让 B 提供接口,这样做数据源 B 发生变化时 B 服务自己维护接口。

    =======

    另外,初中后期其实是一个感性的概念,每个人理解都不一样,最直接的就是看团队的人数,人少时别搞那么复杂,否则流程长,维护成本极高不利于快速迭代;人多时必须复杂,可以规避很多 bug
    wjv22019
        5
    wjv22019  
    OP
       2021-04-07 20:10:02 +08:00
    @securityCoding 个人认为有时候迫于开发成本,时间之类的考虑,还是需要取舍的
    wjv22019
        6
    wjv22019  
    OP
       2021-04-07 20:12:39 +08:00
    @a719114136 好的,谢谢您的建议!
    taowen
        7
    taowen  
       2021-04-08 08:31:28 +08:00   1
    当你考虑这么干的时候,直连不直连都一样了。A 封个查询 RPC 接口给 B 和直连 A 的数据库是一样的。当你发现需求需要你有耦合了,不调整 A/B 的职责分工,单纯换 RPC 方式是换汤不换药的
    xuanbg
        8
    xuanbg  
       2021-04-08 08:43:44 +08:00
    微服务中多个服务可以用同一个数据源,但仅限于同一领域下的服务,譬如拆分应用 /管理服务。楼主这种订单和结算是两个业务领域了,没必要也不应该用同一个数据源。
    abcbuzhiming
        9
    abcbuzhiming  
       2021-04-08 11:50:23 +08:00
    你 B 越过 A 直接操作 A 业务范围内的数据,那 A 的存在意义在哪里?
    ychost
        10
    ychost  
       2021-04-09 17:46:26 +08:00
    建议 A 包一下提供 API 来做吧,不然台混乱了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2609 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 19ms UTC 09:14 PVG 17:14 LAX 01:14 JFK 04:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86