做了三年微服务落地攒下的真心话
2026-10-31 12:04:06
作者:
fawen
去年深秋在河西的那间办公室,空调开得太足,所有人对着监控屏熬到三点。
又崩了。
之前跑了四年的电商单体应用,在大促流量刚破日常三倍的时候,订单服务和库存服务挤在同一个进程里,谁也不让谁,数据库连接被占满,整个站连登录页都刷不出来。
当时团队已经连续两周在赶大促的功能,所有人都红着眼,没人提当初为什么不肯早点拆服务,只想着赶紧把系统救回来。
别一上来就把所有模块全拆了
我们当时被崩怕了,找了网上全套的微服务搭建教程,三天时间就把原来的单体拆成了17个独立服务,每个服务配独立的数据库,觉得这下终于能高可用了。
结果呢?
用户付个款要跨6个服务调用,任何一个节点响应慢个几百毫秒,整个支付流程就卡成狗。之前在单体里一个本地事务就能搞定的扣库存、减余额、生成订单,现在要搞分布式最终一致性,半夜出了资损告警,查了俩小时才发现是订单状态同步失败了。
我们当时拆服务根本没摸准边界,就按之前代码里的包结构硬拆,用户模块一个,商品模块一个,订单模块一个,拆完才发现服务之间的依赖乱成麻,订单服务要调用户服务拿收货地址,要调商品服务实时算优惠,要调支付服务走扣款流程,稍微改个接口字段,上下游七八个组要同步改代码,比之前单体的时候协作成本还高。
单体应用拆分为微服务的边界划分示意图
后来我们花了整整两周复盘,才明白按业务域划分服务边界根本不是对着代码包拆就行,你得搞清楚每个业务域的核心职责是什么,哪些操作是这个域自己能闭环完成的,哪些是必须跟其他域交互的,边界划对了,服务之间的依赖才会少,不然拆得越细,坑越多。
微服务不是银弹是团队协作的放大镜
说真的,当时我们都快骂娘了。
一开始大家觉得拆成独立服务太爽了,每个服务有自己的代码仓库,自己的部署流水线,不用跟别人抢构建资源,改代码也不用怕不小心动到别人的逻辑。结果爽了没一周,告警就炸了。
服务A的开发同学改了个接口返回的字段名,把address写成了addr,没通知服务B的同学,B那边的解析逻辑直接空指针,所有用户的收货地址全读不出来。凌晨两点被电话叫起来,查了两个小时才找到问题根源。
你说这是技术问题吗?根本不是。
微服务从来不是什么能自动提升效率的魔法,它只是个放大镜,把之前藏在单体代码里的所有协作矛盾,全明明白白摆到台面上了。之前大家挤在同一个代码仓库里,接口定义藏在业务逻辑里,没人当回事,反正出了问题大家一起扛。拆成独立服务之后,每一次跨服务调用都是明确的合作契约,谁不守规矩,谁就要承担半夜起来查问题的代价。
微服务链路追踪请求耗时监控面板截图
后来我们定了个死规矩,所有跨服务的接口变更,必须拉上下游的同学一起评审,所有接口的参数定义、错误码、超时时间,全部写在统一的文档里,谁改谁提前同步。搞完这一套之后,跨团队的扯皮反而比之前少了——毕竟谁也不想再因为一个字段名,熬到凌晨四点。
普通人落地微服务的实在步骤
普通人落地微服务的实在步骤
真要落地,别搞那些花里胡哨的概念堆砌,就按最实在的路子走,错不了。
先把你现在跑着的单体应用摸透,把所有的业务调用关系画出来,哪些模块是高频访问的,哪些模块经常因为改代码影响全局,哪些模块一到大促就占满资源,把这些痛点列个表,这些才是你要优先拆分的对象。
记住先拆最痛的模块而非全量拆分,别上来就把整个应用拆得七零八落,不然你连回滚的机会都没有。我们当时拆完17个服务之后,最先做的就是把11个非核心的服务合并回去,只留了最占资源的库存服务、最容易出问题的支付服务单独跑,观察了整整两周,告警量比之前单体的时候还低,才敢慢慢拆其他模块。
还有个底线不能破:可观测能力是微服务的底座,别光拆服务不做配套,链路追踪、日志聚合、核心指标监控这三样是必须有的,不然出了问题你根本不知道是哪个节点炸了。我们刚拆服务的时候,用户反馈付不了款,查了三个小时翻了好几个服务的日志,最后发现是网关的限流规则设错了,把正常的支付请求给拦了——就这种低级错误,要是有个链路追踪的面板,点一下就能看到请求卡在哪,根本不会浪费那么多时间。
别信那些说微服务能让团队效率翻几倍的鬼话。
我们现在跑了快两年,确实尝到了甜头,上次618的时候,库存服务扛了平时八倍的流量,我们单独给这个服务扩了三倍的资源,其他服务一点影响都没有,换之前的单体应用,早就崩得连登录页都刷不出来了。当然成本也涨了,之前只需要维护一套应用,现在要管六个独立服务,每个服务的版本升级、漏洞修复都要单独搞,算下来运维人力比之前多了近一半。
不过话说回来,现在大促的时候再也不用全团队熬到三点了,这点成本,花得值。
上周跟之前的老同事吃饭,他说他们公司去年跟风上了微服务,现在拆了三十多个服务,每次发版要协调十几个团队,效率比之前单体的时候低了三倍,现在正琢磨着往回合并呢。
你看。
微服务从来不是什么先进架构的代名词,它只是个解决你当前业务痛点的工具而已。好用就用,不好用就换,别为了追技术潮流,把自己的团队搭进去。
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:
做了三年微服务落地攒下的真心话
文章链接:https://m.itcdj.com/it/323.html