业务一涨,单机迟早到顶——CPU 跑满、内存吃光、连接数撑爆。这时候有两条路:要么把这台机器换成更猛的,要么再搬几台一样的机器上来一起扛。前者总有物理上限,后者理论上可以一直加下去。 好架构的标志之一,就是"加机器就能线性扛更多"——这就是
分类:分享镜 (120)
"慢了?加个 Redis"——单层缓存确实能扛很久。但流量再往上走,你会发现 Redis 也不是万能的:它也有带宽和连接上限,一个超级热点 key 能把某个 Redis 节点单独打爆,每次访问还都要走一趟网络。这时候问题就从"用不用缓存"变
大促零点一到,流量瞬间翻几十倍;或者某个依赖的下游悄悄挂了,请求一个个堆在那儿傻等——这两种情况,都能让一个平时跑得好好的系统,在几分钟内被压垮,甚至连环雪崩、整片崩掉。这块我自己刚补的时候也绕了好几遍:三个词听着像近义词,真分起来又总搞混
"我们要不要上微服务?""这个得做成分布式的吧?"——聊到架构,这类话满天飞,但架构设计到底在设计什么? 这个问题反而很少被说清。至少我刚开始补这块时是一头雾水的:总以为架构就是画框图、堆时髦技术,后来才慢慢发现不是这么回事。 这是《服务端
你写的那个服务,一个月花公司多少钱?八成研发答不上来 —— 平时只盯功能和性能,账单从没看过。但"会算成本"恰恰是从「只管把功能跑通」到「能扛一摊事」的分水岭:能上线、能稳、还得算得清这摊东西值不值这个钱。 说来有点惭愧,成本这块我也是开始
服务半夜报警、接口忽然变慢、用户说"点了没反应"——登上机器一脸懵:日志刷得飞快却不知道看哪条,问题到底出在哪个服务、哪一段、哪一行,全靠猜。 靠手动打几行日志、登上机器一行行翻去抓瞎,和有一套可观测性(Observability)体系按图
接口能返回数据、调用方能拿来用,需求就算做完了?可一旦上量,问题全冒出来:状态全返 200,调用方只能扒 body 里的 code 判断成败;网络一抖重试,订单建了两笔、款扣了两次;列表越翻越慢;报错只甩一句"系统异常",对方对着日志干瞪眼
下单成功后,要发短信、加积分、发优惠券、通知物流……如果一件件同步串着做,用户得干等到全部做完;更糟的是,只要积分服务挂了,整个下单就跟着失败——明明钱已经付了。 消息队列(MQ)就是用来拆掉这种"强耦合 + 同步等待"的。这篇讲清楚:MQ
一个用得好好的列表页或数据看板,数据一多、时间周期一拉长,就开始转圈、甚至超时。第一反应往往是"加个缓存挡一下",但很多时候根因压根不在缓存,而在查询本身 —— 它扫了太多行。 这篇把治慢查询最该懂的几件事讲清楚:怎么定位慢在哪、索引为什么
"慢了?加个缓存"——几乎是性能优化的第一反应。但缓存加完,新的麻烦才开始:穿透、击穿、雪崩、缓存和数据库对不上……这些坑大多是线上出过事才认识的。 这篇把缓存最该懂的几件事讲清楚:为什么快、怎么用、用在哪、三大坑怎么防,以及最难的——一致

