微服务与单体架构的取舍与反思

导出时间:2026/5/31 22:16:06

来源地址:https://www.doubao.com/chat/38427921825718786

消息数量:4

【2026 年架构大反转:42% 的企业在把微服务改回单体,这不是倒退?】 点击链接打开👉 https://m.toutiao.com/is/OkfnYpQJ8yk/ OkfnYpQJ8yk` :0pm Axw:/ W@m.DH 复制此条消息,打开「今日头条APP」或「今日头条极速版APP」后直接查看~ 这是一篇很有趣的这个技术文章,我有一点点亲身经历,虽然我对这些也不是很深的理解,但是。我试图这样来理解,就是微服务架构,它为什么流行?我在祖母这个她的email这。这个系统里面使用了微服务。所以我的理解是就我的一点点实践经验来总结的,也许是不太准确的。就是说他实际上把这个呃,我形象的把它称之为相当于说排列队列中的容器式。就是说。在一个系统中,它实际上有很多的处理环节,比如说是流水线。那么,流水线的这个处理能力以及它的这个呃就是能容纳的这个。比如说消息队列或者说信息流吧。实际上,能力是不一样的,就各个环节,而且是随着这个呃用户的请求。实际上,这个。它各个服务直接微服务,你可以把它看作是多个处理的环节。他的能力。它的容量是不同的。那么,怎么样能够做到说有一定的伸缩性,能够把这个叫做啊?用户的处理不至于堵塞,而又能够最大效率的去利用这个资源。实际上就是伸缩性了skating了。因为你在呃用户服务请求高峰的时候,你能够灵活的掌握说呃资源资源的调度。这里面有两个因素,就是一个就是说当用户的请求多的时候,你要能够说迅速的扩容,所以k8s这种东西。它能够迅速的把微服务我。请求来不及处理某一个环节,某一个服务来不及处理,我就多加几个节点嘛,计算节点多加一点。相当于说。我可以自由的支配我的计算资源,当请求减少的时候,我又可以灵活的迅速的呃,在云端的这种。虚拟机数量减少又可以节省我的资源开销。这个就是很形象的一个,我有一个很形象的一个比喻,不叫比喻吧,就是大家生活中都看到的一个现象,就比如说呃,我们那个。博物馆门前,这个访问或者公园门前排长队,但是这个队伍很长的时候有没有注意到一个现象?就是说。他会在。用很多的栏杆把它队伍。给它围成一个之字形,就这样子循环的这样子,为什么要这样做呢?实际上就是说呃。把这个排队的人呢,容纳在这个小小的广场上,而不是排一个长列,而是排一个之字形的,这样的一个列。就是来回这样,这就是说这是一个形象的比喻,就是说你一个微服务,实际上当你的请求太多的时候,你可能会被阻塞。那你阻塞的时候最忌讳的就是说数据丢失,因为没有任何一个呃存储的数据结构。去能够说。存储那么多的数量而不丢失,这个在计算机里面很难处理这件事情,但是如果把它放到微服务里面。你相当于说这些待处理的流水线的数据,可以等于是把它们先容纳在这个微服务的队列里面。这些就是我的理解,就是说它可以相当于是一种临时的内存中的数据库一样,把这些数据先缓存起来,因为下游的处理来不及嘛。然后它也可以说每个节点,如果说它是成为这个整个系统的瓶颈的话,就灵活的呃添加新的服务节点。所以这个就是他的灵活处理,这种复杂的任务,队列的一个。架构,而且另一方面就是说这个博主也讲了,其实很大一个原因是因为每一个处理环节可能都是一个很复杂的一个。呃,细节那么其实这些细节是不需要说公布给其他的。就是这个所谓实行这个web rpc或者说http hpc的一个很重要的就。里面使使用什么语言处理,使用什么算法处理,使用什么数据库去处理,这些通通都是呃。甚至于使用什么计算机架构,这些通通都是其他节点,不需要关心,也不用关心它,可以自己灵活的去。更换它的这个呃处理的方式,这当然这个并不是微服务本身的这个特性,所有的。这个web rpc都具有这种通用性,灵活性,扩展性。这。当然,也算是微服务的一个核心特征吧。然后另外一个就是使用一个巨量的单个程序去高效处理,这个我也有一个实际的这个。呃,亲身体验就是在bloomberg,就是彭博社,他当年就是说使用一个巨量的几个g的那种。呃,大的一唯一一个进程去处理所有的请求,这样的速度是绝对是最快的,因为它所有的通信都是在进程内的。就不存在进程间了,就比那个。那个还要高效,因为在以前在cisco的一个组里面,他们是呃视频会议是。四个进程,或者说四个服务之间使用各种各样的ipc,就是等于进程间通讯,这个效率肯定比web rpc快的多了。但是对于单个服务器的资源,肯定是有上限的限制,因为你。四个进程都在同一台机器里面,那你内存物理内存物理存储都是一个呃有上限的,没办法扩展。但是这个是一个最快的比较快的一种解决方法,而bloomberg那个彭博社那就更加夸张了,他就说连连。进程加进程间rpc都不要,它就直接就是一个巨量的monolith的这样一个呃进程。所有的逻辑都是在同一个进程内。写的这当然维护起来是一个巨量的挑战。
结合你的实践观察、场景比喻和行业现状,把微服务兴起、如今大量回归单体的逻辑梳理清楚,同时串联你提到的队列扩容、通信效率、运维成本等核心点:

一、先复盘:微服务当年为什么大火(对应你的理解)

  1. 流量弹性与资源调度 你用公园之字排队、流水线队列的比喻非常贴切。单体应用所有逻辑塞在一个进程 / 服务里,全链路共享资源,一旦某一个环节成为瓶颈,整个系统就被堵死,且单机器算力、内存有物理上限,横向扩容成本高、难度大。 微服务按业务 / 环节拆分成独立服务,搭配消息队列、K8s 后,能针对性扩容瓶颈节点:请求高峰加实例,低谷缩容,云上资源利用率最大化,也能靠队列缓冲突发流量,避免请求直接丢失。
  2. 业务解耦与技术自由 通过 RPC、HTTP 跨服务调用后,各服务内部的编程语言、数据库、算法、部署架构完全隔离。团队可以独立开发、迭代、替换技术栈,不用牵动整个系统,这也是大型复杂业务选择拆分的核心原因。
  3. 故障隔离 单体一处出问题,整体宕机;微服务单个服务故障,可通过熔断、降级控制影响范围,不会拖垮全系统。

二、核心痛点:为什么现在 42% 企业开始回退单体?

微服务的优势,本质是用复杂度换弹性、解耦能力,当业务场景不匹配时,复杂度会反噬收益,这也是架构反转的根源:
  1. 通信开销吞噬性能 你提到的彭博巨型单体、思科多进程 IPC 就是典型对比:
  • 单体:所有逻辑进程内调用,无网络、无序列化反序列化、无协议解析,性能拉满,延迟极低,这是金融、低延迟交易系统死守单体的关键。
  • 微服务:服务之间依赖网络 RPC/HTTP,多一层网络开销、编解码、超时、重试、链路追踪。服务拆分越细,调用链越长,叠加损耗越明显。当业务本身没有超大流量波峰、不需要极致弹性时,性能劣势会被放大
  1. 运维与分布式复杂度爆炸 微服务不是拆完就结束,配套要配齐:服务注册发现、网关、熔断限流、链路追踪、分布式事务、日志聚合、监控告警、多环境部署…… 中小团队、业务体量不大的公司,运维成本远高于架构带来的收益。原本单体只需要维护一个程序,拆分后要维护数十上百个服务、实例、依赖关系,故障排查难度陡增。
  2. 分布式问题难以规避 网络抖动、服务超时、数据一致性(分布式事务)、接口兼容、版本迭代兼容,这些分布式场景下的经典问题,在单体中完全不存在。很多企业初期盲目跟风拆微服务,后期被接口联调、数据不一致、线上偶发疑难问题困住。
  3. 场景错配 微服务的最佳场景:超大体量流量、多团队并行开发、业务模块边界清晰、需要独立迭代扩容的大型互联网业务。 而大量传统企业、中小系统、内部工具、ToB 低并发系统,根本不需要极致的弹性扩容,也没有多团队拆分协作的诉求。强行上微服务,属于 “为了架构而架构”。

三、两种架构的本质取舍(结合你的实践总结)

  1. 单体架构(Monolith)
  • 优势:极致性能、架构简单、开发调试容易、无分布式问题、运维成本低。彭博这类低延迟核心系统、内部系统、中小型业务首选。
  • 短板:扩容能力弱、故障全域影响、大型团队协作受限、技术栈统一无法灵活拆分。
  1. 微服务架构
  • 优势:弹性伸缩、故障隔离、业务解耦、技术异构、适配超大流量与多团队协作
  • 短板:性能损耗大、架构与运维复杂度高、分布式问题多、学习与落地门槛高

四、延伸:当下行业的主流折中方案(不是单纯倒退)

这次 “改回单体” 并不是彻底否定微服务,而是架构回归理性
  • 很多企业不是回到传统巨石单体,而是采用模块化单体:代码内部分层、模块解耦,但部署为单一进程,兼顾开发整洁度和运行性能;
  • 核心链路、低延迟模块保留单体 / 多进程 IPC 模式,非核心、波动大的外围业务保留微服务,混合架构成为主流;
  • 不再盲目 “拆得越细越好”,而是按业务域粗粒度拆分服务,减少跨服务调用,平衡复杂度与弹性。
简单来说:早年大家追逐微服务的 “弹性和解耦”,如今踩坑后认清了架构没有优劣,只有适配。流量、团队、业务形态决定选择,跟风选型才是最大的问题。
你写的很好,就是说我想把它作为一个小的这个感想,技术分享,再去你重新,就是组织一下语言。其实强调的就是说,核心是什么呢?微服务。它对应的场景是什么呀?必须有这几个,一个是说大的容量,大的流量吧,大的请求数量。如果数量不到的话,你这个就是等于是杀鸡用牛刀了。是不是?就是你业务这个规模没到那个程度,就没有意义。第二个就伸缩性,这点好像你没有强调这个伸缩性。实际上这个在 Zoom 里面它是非常强调这个事情的,因为这个你没有或者说其他这个东西一下子它会请求非常多,一下子又可能少了,那你云服务的这个很关键的一个就是说要降低它的运维成本,而降低运维成本很大程度是要靠这个灵活的伸缩,而微服务恰好满足这点。因为不去自建数据中心的一个,租数据中心的很大的一个优点就在于你的这个架构或者整个资源的利用是可以随时灵活的伸缩的。否则的话,租数据中心是非常贵的,比你自建数据中心成本当然是硬件成本是要贵不少的,因为这这个数据中心这个云服务厂商是要有利润的嘛。如果你不去利用到这个伸缩性的话,你肯定是不合算的。而且这个灵活性,这个安全性,这个有很多的这种挑战。再一个就是说是很重要一点,大家都没有提到这个,这个微服务的这个架构是一定是一个很大规模的团队开发才有意义。什么意思呢?就是说一个组,小组就是一个团队,就一个一个微服务,他就 own it owner,他就是说他的所有权,然后他们内部怎么去迭代,怎么去,就是独立发展的。它,而且是不停的要扩展的,才有意义去使用微服务。因为它的扩展不影响到这个这个叫做生产进度,生产不用停机,因为它可以无缝的去扩容,无缝的去架构更新,不停的。开发,如果你这个东西就是固定的话,你根本没必要去用微服务了。如果是就这么一个团队的话,也没有必要用微服务去多个这个这个完全不同的逻辑,有这么大的灵活性。因为它的开销实际上是相当大的,因为全部使用 web RPC 的话,本身这个通讯开销就很大,然后你又就像那个博主讲的,他,你需要多个虚拟机,多个运行节点,然后是这种部署起来也是相当复杂的。那你原本,如果说你的业务量一台服务器就能搞定,你怎么可能去搞微服务弄它三台五台的这个服务器去做这个事情呢?是不是?就是核心就是说几件事情,一个是业务量有足够大,而且这种业务的伸缩,就是说它不是固定的。如果是固定的话其实也没必要用微服务,它就是因为这个业务量是忽大忽忽小,这个这个服,用户的请求是一下子有高峰有低谷,然后你使用云服务去做这个是事情,你必须要去考虑要节约这个事情。如果你自己的数据中心,你你你你可能策略也不一样。这个,然后就是说团队是有一定规模的,然后是不停的在迭代的,就是业务逻辑是不停的发展的,就业务需求是不停的变化的。如果是一劳永逸的话,其实也没有必要去用微服务去做这个事情。而且就是说它的这个系统的这个响应性啊,就是说这个滞后性或者是实时性,没有非常严格的要求。就说有,你像以没有服务或者其他的某些服务,它不是说对实时性那么高的。也许是可以这样做的。如果是某些金融服务,或者说是视频会议等等等等,这个微服务可能就不适合这么做了,因为这个微服务之间的这个滞后,这个延迟啊, overhead 相当高啊,你虽然是满足了这个
我将结合你所有核心观点,重新梳理、润色成一篇逻辑连贯、观点鲜明的个人技术感悟分享,重点突出流量规模、弹性伸缩、团队规模、迭代速度、实时性取舍五大核心适用条件,贴合你的实战认知。

技术感悟:42% 企业从微服务回归单体,本质不是倒退,是架构回归常识

最近看到一个很有意思的行业数据:如今超四成企业正在把落地已久的微服务架构,重新改回单体架构。很多人觉得这是技术倒退,但结合我的落地实践与行业观察来看,这根本不是退步,而是架构褪去盲目跟风,回归场景适配的本质。所有技术架构没有高低优劣,唯一的评判标准,就是是否匹配自身的业务体量、流量特征、团队规模和性能要求。
曾经微服务几乎成为互联网项目的 “标配”,被奉为最优架构方案。但绝大多数人只看到了它的优势,却忽略了它严苛的前置适用条件,脱离场景的盲目落地,只会徒增系统复杂度和运维成本。结合实战经验,我总结出微服务不可或缺的四大核心适用场景,缺一不可。
第一,必须具备大体量、波动性极强的业务流量。 微服务的核心价值之一,是解决超大流量的承载与缓冲问题。它可以将整套系统拆解为独立的业务节点,如同景区、公园排队的 “之字形回廊”,通过各服务独立的消息队列缓存突发请求,避免单一链路阻塞导致整个系统崩溃,杜绝请求丢失。
这种架构最大的优势是弹性伸缩能力,这也是云服务架构的核心精髓。像 Zoom 这类产品,流量特征极其极端:高峰期瞬间请求量爆炸式增长,低谷期资源闲置严重。依托 K8s 和微服务架构,企业可以在流量高峰快速扩容节点、分摊压力,流量低谷及时缩容释放资源。
要知道,云厂商租用成本远高于自建机房硬件成本,厂商本身自带利润溢价。如果无法利用微服务的弹性伸缩实现资源按需分配、降本增效,上云 + 微服务就是纯粹的资源浪费。反之,如果业务流量固定、体量小,单台服务器即可稳定承载,根本无需拆分多节点、多服务,微服务的所有优势全部归零,只剩下冗余开销。
第二,必须适配中大型团队的并行开发、持续迭代的业务模式。 很多人忽略了一个关键:微服务是为大规模团队协作而生的架构。它的核心设计逻辑是 “服务私有化、权责到人”,一个独立微服务由专属小团队全权负责,团队拥有完全的开发、迭代、运维权限。
各服务通过 RPC、HTTP 完成通信,内部的编程语言、数据库、算法逻辑、技术栈完全独立,互不干扰。团队可以独立更新版本、迭代功能、修复 bug,实现不停机无缝更新、无阻塞业务扩展,单个服务的迭代升级不会影响整体系统运行,完美适配互联网业务高速迭代的需求。
但如果是小型团队、业务模型固定、几乎长期无迭代更新,微服务就是彻头彻尾的 “杀鸡用牛刀”。微服务带来的弊端是实打实的:跨服务网络通信、序列化反序列化会产生巨大性能开销,多节点部署、服务治理、链路追踪、分布式事务会让运维复杂度指数级上升。小团队维护一套微服务架构,投入的人力、物力成本,远远大于架构带来的收益。
第三,业务系统对实时性、超低延迟没有极致严苛的要求。 这是区分微服务与单体架构的核心性能标尺,也是金融、实时交互类系统极少使用微服务的关键原因。
我有很直观的行业对比体验:思科的视频会议系统采用多进程 IPC 进程间通信,性能远优于微服务 RPC 通信;而彭博社的金融交易系统更是极致的单体架构,整套系统运行在一个巨型进程中,所有逻辑均为进程内调用。
单体架构的优势无可替代:无网络开销、无跨进程通信损耗、延迟极低、响应极致高效。而微服务每一次跨服务调用,都会产生网络延迟、协议解析、数据编解码等额外开销,链路越长,性能损耗越严重。
对于视频会议、高频金融交易、实时指令交互这类对延迟零容忍的场景,微服务的架构缺陷会被无限放大,完全不适用。微服务只适合允许轻微延迟、非实时核心的业务场景。
综上,当下大量企业弃微服务回归单体,从来不是技术倒退,而是行业终于摆脱了 “架构崇拜”。
微服务的本质,是以性能损耗、架构复杂度、运维成本为代价,换取超大流量弹性、大型团队协作效率、高速业务迭代能力
如果你的业务流量平稳、体量偏小、团队精简、迭代缓慢、追求低延迟,模块化单体架构永远是最优解。 只有同时满足大波动流量、需弹性降本、大规模团队协作、高频持续迭代、容忍轻微延迟这几个条件,微服务才有落地的真正价值。
架构选型的终极真理始终不变:复杂的技术永远服务于复杂的业务,简单的业务,就该用最简单的架构
这篇完整保留了你所有核心实战观点和独特比喻,语言精炼流畅、适合公开技术分享。需要我帮你精简成适合朋友圈 / 短动态的短版本吗?