V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rehoni
V2EX  ›  程序员

怎样才算是一个优秀的微服务

  •  
  •   rehoni · 8 天前 · 3471 次点击
    模块化?解耦?独立库?分布式可扩展?
    做了这么多年野路子开发,感觉自己还是不知道怎样的微服务才算是一个优秀的微服务
    40 条回复    2025-07-29 07:52:11 +08:00
    CodeCodeStudy
        1
    CodeCodeStudy  
       8 天前
    高内聚,低耦合。将相同功能的放在一起,尽可能减少对外部的依赖。微服务一定要“微”,如果还是启动半天,占用内存很大的话就不叫微服务了。
    yalin
        2
    yalin  
       8 天前
    没有微服务
    mamtou
        3
    mamtou  
       8 天前 via Android
    稳定
    fish2050
        4
    fish2050  
       8 天前
    比如 xx 一体化系统,涉及 xx 业务的工单子系统、设备子系统、营收子系统、物资子系统等等,

    每个子系统,都是一个“微服务”,然后前端统一门户,每个子系统单独的界面统一登陆跳转。
    SSang
        5
    SSang  
       8 天前
    微服务就不可能优秀
    SSang
        6
    SSang  
       8 天前
    “微服务已死” 虽然说的有些严重了,但并没有太多夸张的成分。服务架构永远不可能存在公式,你的需求千奇百怪,资源也在不断变化。如果你的问题原本的架构解决不了,那换成微服务,大概率也解决不了。没有任何一个架构是银弹,有的只是符合当下需求。
    homewORK
        7
    homewORK  
       8 天前
    全套自动 CICD ,流程规范并已落地
    cookii
        8
    cookii  
       8 天前 via Android
    @SSang 人家又没问架构设计,你上来就是微服务已死。
    lyusantu
        9
    lyusantu  
       8 天前
    独立部署、快速迭代、稳定运行
    SSang
        10
    SSang  
       8 天前
    康威定律说:organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations. — M. Conway (一个组织的系统通常被设计成这个组织通信结构的副本)

    微服务起源与大型团队多人协作,你先看看你的团队有几个人。如果就两个开发有什么可微的呢?

    我相信,b 站,京东,阿里,一定还用着微服务架构,因为这能解决他们的问题,但对于你的团队呢?能解决什么问题?你不知道怎样的微服务才算优秀,那你有没有考虑过你们团队,你们的项目根本不适合使用微服务呢?
    xomix
        11
    xomix  
       8 天前
    微服务 12 守则,能够在保障业务的前提下尽量多的满足守则的服务就是好的微服务。
    xuanbg
        12
    xuanbg  
       8 天前
    运行稳定、扩容方便、维护简单
    spritecn
        13
    spritecn  
       8 天前
    一定要微? 一个服务不说一个团队负责吧,至少得有一个人负责,微到一个表起一个服务,那? 公司有多少人?
    SSang
        14
    SSang  
       8 天前   ❤️ 1
    微服务设计本身并没有优劣之分,只有适合和不适合。团队有三四个人时,或服务规模扩张时,大单体可以拆成小单体,避免代码的互相腐蚀。再随着规模扩大,小单体可以拆的更小,就变成了微服务。

    微服务更多的是反应的团队协作问题,而在架构设计上,微服务理念并不一定是直接体现在服务拆分上的。

    事实上,你可以看看主流的架构,无论哪个架构,都在提倡 “高内聚、低耦合”,所以,微服务的 “思想” 并不是一个专利,你仍然可以在单体服务上贯彻微服务理念。“解耦本身就是优秀”

    至于你说的独立库,更多的是管理上的东西,你看 K8S ,也在使用巨型仓库,但他们有优秀的上下游管理自动化脚本。所以不是说你独立了仓库就一定是最好的,工程化不是一套公式就能打完的。

    而你说的分布式、可扩展,这更多的是服务拓扑,你总不能说大单体就不能分布式,就不具备扩展性,很多设计优秀的大单体,他的扩展性能远超微服务。
    SSang
        15
    SSang  
       8 天前
    @cookii 别急,我还没说完呢。喊 “微服务已死” 的那波人,大多都是小公司,小团队,我想说的是,微服务是不会死的,死的是那些用着微服务的小团队。
    sky3hao9
        16
    sky3hao9  
       8 天前
    微服务的最佳实践需要天时地利人和, 公司项目要大, 技术要懂, 而且前期有设计规划时间, 架构师要牛逼, 领导要支持..
    我也算经历过几个大公司, 微服务的实践都很操蛋.
    opengps
        17
    opengps  
       8 天前
    以上指标都是虚的,优秀意味着用的久用的多
    opengps
        18
    opengps  
       8 天前
    实用性永远第一
    Oni0n
        19
    Oni0n  
       8 天前
    @SSang 认同
    micean
        20
    micean  
       8 天前
    单体万岁 doge
    frank42a
        21
    frank42a  
       8 天前
    不一定微服务,做集群就可以了
    nealHuang
        22
    nealHuang  
       8 天前
    one-pizza team 规模都达不到的团队,感觉还是少碰微服务微妙,做集群横向扩展就好
    jeristiano
        23
    jeristiano  
       8 天前
    @yalin 是的,尽量不用微服务,就连微服务的首创者被问到什么才是最好的微服务,如何践行 DDD ,他的回答意味深长: 要看程序员的经验。
    monkeyWie
        24
    monkeyWie  
       8 天前
    微服务不如 monorepo ,特别是在小公司
    kdd0063
        25
    kdd0063  
       8 天前
    microservice 本质不是技术问题,而是管理问题。这一点都还没想明白的话建议别上
    fffq
        26
    fffq  
       8 天前
    技术架构 约等于 公司架构
    rehoni
        27
    rehoni  
    OP
       8 天前
    @xomix 12 守则是什么
    rehoni
        28
    rehoni  
    OP
       8 天前
    @fffq 哈哈,认可
    testcgd
        29
    testcgd  
       8 天前 via Android   ❤️ 1
    什么是好的微服务不太理解,我觉得不好的微服务有几个特点吧
    1 、服务数量多过维护人数的
    2 、加逻辑要改 n 个服务的
    3 、新人不知道某个逻辑在那个服务的
    Roan
        30
    Roan  
       8 天前
    鲁棒性,错误恢复
    sighforever
        31
    sighforever  
       8 天前
    @SSang 真不一定,小团队经常要把一堆开源软件改吧改吧和部署上,这时候每个开源软件就是个微服务,甚至多个微服务。
    zhangkui
        32
    zhangkui  
       8 天前
    杂交怪,苹果树上长香蕉,能用就行呗!
    rehoni
        33
    rehoni  
    OP
       8 天前
    @testcgd ok ,我的项目全中
    yalin
        34
    yalin  
       8 天前
    还得是 v 友水平高,谈微服务能谈到康威定律。感觉现在国内用微服务的人,都不一定知道谈康威定律了
    yb2313
        35
    yb2313  
       8 天前
    说到微就想到 min,说到服务就想到 service, 想到 soft, 就想到 Microsoft, 邪恶的微软
    james122333
        36
    james122333  
       7 天前 via Android
    答案是没有 所谓的微服务只是把现有流行的东西串起来使用而已 组件肯定不轻 然后用 http...
    分布式系统是种大范畴 微服务被包含在里面而已 解决方案并不漂亮 只是跨平台
    aarontian
        37
    aarontian  
       7 天前
    首先我觉得野路子是好词,因为我也是野路子,有技术热情才会走野路子。

    微服务是更适合互联网大厂的架构,对基建成熟度、业务体量、团队规模都有要求,都不满足或者只满足一点的,没必要硬上。服务微到一定程度一定是灾难,因为不可能在拆得很细的情况下还能保证高内聚低耦合。之前在某大厂合并过一堆微服务,二合一三合一七八合一一堆,这还是我一个人干的活,相信类似的事很多人都干过,算是擦屁股了。合并后维护成本低的不是一点。事实证明四五个人在一个 repo 中协同开发,一点都不比分离开困难(当然 repo 跟服务也不是一回事)。

    29L 老哥已经描述了我们当时踩过的坑了。另外第二点“加逻辑要改多个服务”,也可以再加个“改实体”。

    具体怎么拆我感觉凭业务理解和直觉的多一点,但一个笼统的想法是,在你没有想好是不是有必要拆、没有想明白拆的原因/边界的时候,那就别拆。
    nrtEBH
        38
    nrtEBH  
       7 天前
    取决于业务架构
    这年头也很多大厂用巨型单体架构
    不是说哪种方案是最好的 只有最适合的
    it always depends on your business
    rehoni
        39
    rehoni  
    OP
       4 天前
    @aarontian 改多个实体,是数据库表结构设计的不行吗?
    aarontian
        40
    aarontian  
       3 天前
    @rehoni 我指的是“改实体会涉及多个服务”,之前遇到过这种设计,就是强行拆微服务带来的,每个服务都会维护一份实体结构去操作数据库
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:59 · PVG 01:59 · LAX 10:59 · JFK 13:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.