关于服务拆分 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Evilk
V2EX    PHP

关于服务拆分

  •  
  •   Evilk 2020-08-18 09:42:18 +08:00 4058 次点击
    这是一个创建于 1969 天前的主题,其中的信息可能已经有所发展或是发生改变。

    团队语言:PHP

    目前业务较多,项目较多,维护起来,成本太高 现在需要把服务拆分,形成一个一个单独的服务 比如,每个项目都有下单逻辑,现在就想把下单逻辑整合成一个服务 最外层有一个类似于 open-api 的东西,client 调用这个 open-api,open-api 再调用内部的服务

    大致是这样的一个方向

    目前的选择:

    1.腾讯的 tars *这个没有去深入了解过,不知道效果和稳定性如何?

    2.还是走普通的 http 协议,架构选择:php-fpm or swoole

    我们大概评估了下,对于我们公司来说,没有必走 RPC,普通的 http,足够了

    原因:

    1.量还没有那么大

    只是想把服务拆分出来,维护起来方便一些,这是最重要的一个原因 不一定要用微服务全套的东西,对于我们公司来说,成本太高了,只是想借鉴微服务的一些优点吧

    各位老哥,有什么好的建议吗?

    20 条回复    2020-09-04 20:14:41 +08:00
    C603H6r18Q1mSP9N
        1
    C603H6r18Q1mSP9N  
       2020-08-18 10:03:44 +08:00
    提醒 php-fpm 高并发下,吃数据库链接!!!
    Evilk
        2
    Evilk  
    OP
       2020-08-18 10:04:33 +08:00
    @shanghai1998 那如果用 swoole,上连接池,是不是会好很多?
    ChevalierLxc
        3
    ChevalierLxc  
       2020-08-18 10:18:20 +08:00
    我觉得是因为你的项目多 导致你维护困难,拆分服务并不是一个很好的解决方法,拆分出几十个服务后,你会发现要做公用包的拆分,服务链路追踪,一系列的微服务的生态,这些都是工作量,更需要人维护。我觉得根本问题还是你们人太少了,项目太多了,做不过来。
    Evilk
        4
    Evilk  
    OP
       2020-08-18 10:48:33 +08:00
    @ChevalierLxc 目前招人不现实,老哥,还有更好的建议吗?
    leopod1995
        5
    leopod1995  
       2020-08-18 10:55:39 +08:00
    主要还是架构问题吧,建议把比较重、通用的逻辑业务拆出来做成内部服务,至于 api-gateway 就没必要做了。
    ben1024
        6
    ben1024  
       2020-08-18 12:12:50 +08:00
    加深对业务理解才是主要问题,拆分服务只会带来更大的成本
    594duck
        7
    594duck  
       2020-08-18 13:11:19 +08:00 via iPhone
    @Evik 老哥你做的是对的。我给你指条明路,微服务是瞎吹,SOA 就够了。

    你的思路是对的,公共服务以中台的形式拆出来。前台都只是业务层。

    中台有 CRM ERP 支付 wms dms tms 等等。前面什么多端多营销的让他们在前面自己看。

    你的 qps 在多少多估算 3 倍就好了。应为本来一次流量这么拆了可能会发生 3 次。

    大部分公司 SOA 做好就够了,微服务,咱正经人不吹逼
    JJstyle
        8
    JJstyle  
       2020-08-18 13:23:29 +08:00 via iPhone
    你们多个项目下的“单”是相同实体吗?是的话可以,不是的话就没必要了
    specita
        9
    specita  
       2020-08-18 13:34:47 +08:00   1
    应该没到微服务的地步,拆分感觉只会加重你们的负担。重新梳理一下系统边界,把项目模块业务边界整理下,然后做些调整就好了,代价相应也比较小。
    chihiro2014
        10
    chihiro2014  
       2020-08-18 13:38:04 +08:00
    确定系统边界这个得明确。
    不然拆分出来就很 gg
    最主要的还是表设计得到位啊。
    不到位拆分出来,就很痛苦了。
    推荐看这个视频
    https://www.bilibili.com/video/av60528090
    Evilk
        11
    Evilk  
    OP
       2020-08-18 13:39:08 +08:00
    @leopod1995 我描述的,open-api,其实应该叫项目,比如有 A|B|C,A|B|C,都有一些自己的东西,但都不涉及 DB 操作,然后,外部 client 只能访问 A|B|C,A|B|C 再通过内网,访问内部服务
    Evilk
        12
    Evilk  
    OP
       2020-08-18 13:40:12 +08:00
    @ben1024 老哥,可以更具体点吗?目前业务理解是到位的,只是因为历史原因,很多项目,有很多重复的部分,现在就是要把这些重复的提取出来而已,方便维护
    Evilk
        13
    Evilk  
    OP
       2020-08-18 13:42:37 +08:00
    @594duck 是的,因为我们用不上微服务全套,只是借助微服务一些优点而已,方便维护,仅此而已
    Evilk
        14
    Evilk  
    OP
       2020-08-18 13:42:54 +08:00
    @JJstyle 是相同实体
    Evilk
        15
    Evilk  
    OP
       2020-08-18 13:44:56 +08:00
    @specita 不是很理解你说的"模块业务边界",还请教?
    ben1024
        16
    ben1024  
       2020-08-19 09:42:56 +08:00
    @Evilk
    1.建议先内部抽取服务层,当前已经是项目多维护成本高,在进行拆分服务维护成本会增加
    2.做服务整合要考虑事务一致性,针对下拉单服务是否能单独存在跟其他服务没有依赖,在最后的步骤进行拆取,后面迭代会遇到拆取后的服务越来越大
    zencoding
        17
    zencoding  
       2020-08-19 10:07:46 +08:00
    你需要的是 SOA
    C603H6r18Q1mSP9N
        18
    C603H6r18Q1mSP9N  
       2020-08-19 10:11:44 +08:00
    上连接池还是一般般,反正测试下来 java 是 swoole 的 2 倍
    dvaknheo
        19
    dvaknheo  
       2020-08-20 23:46:31 +08:00
    首先从拆分数据库开始
    MaxFang
        20
    MaxFang  
       2020-09-04 20:14:41 +08:00
    也遇到相同的问题,感觉主要还是梳理业务逻辑,划清系统模块边界和职责。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1333 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 17:14 PVG 01:14 LAX 09:14 JFK 12: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