news 2026/10/4 21:06:45

从单体到微服务,后端技术栈演进全复盘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从单体到微服务,后端技术栈演进全复盘

几年前,我们的系统是一个标准的单体应用:一个Spring Boot打成的war包,扔进Tomcat,连着一个MySQL,部署在几台虚拟机上。简单、直接、高效。但业务量涨了十倍,团队从5人扩到30人后,这个“大泥球”开始让人窒息——改一行代码要全量回归,发一次版要停服半小时,数据库连接池天天爆满。

于是,我们踏上了微服务拆分的“不归路”。今天就把这次演进的技术栈变化和踩过的坑,完整复盘一遍。

单体时代的甜蜜与烦恼

单体架构的甜,在于开发简单、调用直接、事务好管。但甜头很快被痛苦淹没:代码库膨胀到几十万行,模块间循环依赖,新人上手要三个月;每次上线像拆炸弹,一个模块的bug能拖垮整个系统;更致命的是,我们无法针对高并发模块单独扩容,只能整体加机器,成本飙升。

微服务拆分:从“大泥球”到“分布式”

我们按业务域拆出了用户、订单、商品、支付、库存等八个服务。每个服务独立开发、独立部署、独立数据库。技术栈也随之全面升级:

服务框架:从Spring Boot单体,过渡到Spring Cloud Alibaba。Nacos做服务注册发现和配置中心,替代了原来的Eureka+Config。

网关:引入Spring Cloud Gateway,统一鉴权、限流、路由,前端不再直接调用后端服务。

服务调用:OpenFeign声明式调用,配合Sentinel做熔断降级,防止雪崩。

数据库:每个服务独立MySQL实例,通过ShardingSphere分库分表。跨服务查询改用API组合,不再用JOIN。

消息队列:引入RocketMQ处理异步解耦,比如订单创建后发消息通知库存扣减和积分增加。

链路追踪:Sleuth + Zipkin,后来换成SkyWalking,终于能看清一个请求跨了哪些服务、耗时多少。

容器化:Docker打包,K8s编排,配合Jenkins Pipeline实现滚动发布。

复盘:踩过的坑与反思

坑一:拆分粒度过细。一开始追求“小”,把用户拆成注册、登录、信息三个服务,结果一个查询要跨三次调用,延迟翻倍。后来合并为“用户服务”,边界围绕业务能力而非技术分层。

坑二:分布式事务想得太简单。订单扣库存,用Saga补偿,结果补偿逻辑比正向还复杂,消息重复消费导致库存扣两次。最后改成“本地消息表+定时对账”,牺牲强一致换可用性。

坑三:运维复杂度指数级上升。服务从1个变8个,日志散落各处,排查问题像大海捞针。直到上了ELK和SkyWalking,才把可观测性补齐。但K8s的学习曲线,让运维团队脱了一层皮。

坑四:团队组织没跟上。服务拆了,但人还是一个大组,改一个接口要协调三个服务。后来按服务划分小组,每个组6-8人,全生命周期负责,才算真正落地康威定律。

总结:没有银弹,只有取舍

微服务不是目的,而是应对“大规模团队协作”和“独立部署”的手段。它带来了弹性、可扩展性和技术异构性,但也引入了分布式复杂性、数据一致性和运维成本。

如果让我重新选一次,我会在业务真正需要时才拆,先做好模块化,再考虑服务化。技术栈的演进不是越新越好,而是越匹配团队能力越好。从单体到微服务,我们得到的不仅是架构升级,更是对“权衡”二字的深刻理解。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 21:04:35

芯片烧录全解析:ICP、ISP、IAP三种方式区别与应用

芯片烧录这个事,看起来就是“把程序写进芯片”,但真上了产线或者自己画板调试,你会发现里面的门道远比想象的多。同样是烧录,有人用编程器夹子,有人用串口线,还有人让芯片自己更新自己,这三种路…

作者头像 李华
网站建设 2026/10/4 21:02:41

微信小程序粤语文化传播平台开发实战

做这个项目的初衷其实很朴素。我身边有不少朋友想学粤语,但市面上的教学App要么太重、要么太贵,而真正把粤语文化和日常表达结合起来的轻量产品几乎没有。琢磨了一段时间,我决定用微信小程序做一版——不装App、扫码即用、随手转发给朋友也方…

作者头像 李华
网站建设 2026/10/4 21:02:13

MRAM+RA6M4工业级数据存取架构设计与实操

1. 这不是普通存储方案:MR25H40CDF R7FA6M4AF3CFB 的工业级数据存取本质你手上正拿着一块MR25H40CDF——这不是普通的SPI Flash,也不是常见的EEPROM。它是Everspin出品的4Mb串行MRAM(磁阻随机存取存储器)芯片,采用TQF…

作者头像 李华
网站建设 2026/10/4 20:59:20

Windows本地部署MinerU:RAG文档预处理与PDF解析实践

1. Windows 本地部署 MinerU:RAG 文档预处理的正确姿势先说个直白结论:很多 RAG 项目做不好,问题不在向量库、不在 embedding 模型,而在上游第一步——PDF 解析就是脏的。文档里明明是表格,解析出来变成一行行死文字&a…

作者头像 李华
网站建设 2026/10/4 20:54:03

Shell数学计算全攻略:从整数到浮点,一文搞定脚本运算

早年间我刚开始正经写 shell 脚本的时候,遇到过一件让我怀疑人生的事:在终端里敲echo 1 2,满心期待它给我输出个 3,结果它原封不动打印了一行1 2。后来才明白,shell 骨子里是个“字符串搬运工”,它默认把…

作者头像 李华
网站建设 2026/10/4 20:53:55

802.11 DCF仿真实战:用Python实现CSMA/CA冲突避免机制

简介:CSMA/CA(载波监听多路访问/冲突避免)是IEEE 802.11无线局域网中减少数据碰撞的核心机制,这份压缩包以MATLAB脚本完整实现并图形化展示了该协议的工作过程,代码附有详细注释与逐步解释。资源共20个文件&#xff0c…

作者头像 李华