从单体到微服务:一次痛苦但值得的架构演进
当我们决定把跑了五年的 Spring Boot 单体拆成微服务时,以为最大的挑战是技术。跑了三个月才发现,真正的难题是团队认知对齐和数据一致性。这篇记录了完整的心路历程。
最新发布
8Nagle 与延迟确认:一个攒包一个拖确认,40ms 卡顿的百年恩怨
Nagle 想攒满一车再发,延迟确认想等 40ms 搭个顺风车——两个都出于好意的机制碰到一起,就是 request-response 场景的经典卡顿。一条 TCP_NODELAY,多数交互式服务都该开。
拥塞控制:慢启动、拥塞避免、快重传、快恢复四幕剧
rwnd 管得住接收方,管不住中间那条拥堵的路。TCP 用 cwnd 探路:指数冲刺、线性爬坡、丢包刹车、减半缓行。1988 年的四幕剧演到今天,直到 BBR 换了个思路。
滑动窗口:TCP 凭什么不丢、不重、不乱序
发一个等一个太慢,一口气全发出去又会淹死对端——滑动窗口在两者之间找平衡:在途数据封顶,确认到来窗口右滑。配合超时重传、快速重传和 SACK,构成 TCP 可靠性的四梁八柱。
四次挥手与 TIME_WAIT:分手为什么这么麻烦
挥手四次因为 TCP 允许半关闭——你 说完了不代表我 说完了。主动关闭方还要在 TIME_WAIT 里等 2MSL,服务器上几千个 TIME_WAIT 不是事故,几千个 CLOSE_WAIT 才是。
三次握手:为什么偏偏是三次,两次不行吗
SYN、SYN+ACK、ACK——三个报文立下约定。两次会让迟到的旧连接请求冒名顶替,四次纯属浪费。半连接队列、SYN Flood、随机 ISN,全是这三次握手衍生出来的故事。
MAC 与 ARP:局域网里怎么找到隔壁那台机器
IP 是逻辑门牌,会搬家;MAC 是出厂身份证,终身不变。ARP 用一次广播把两者对上号,跨网段时目标 MAC 永远填网关——理解了这句,一半的局域网怪病都能解释。
IP 地址与子网掩码:/24 到底是什么意思
192.168.1.0/24 不是暗号,是前缀长度。子网掩码把 32 位地址切成网络号和主机号两半,切法不同,能容纳的主机数天差地别。搞懂 CIDR,容器网段冲突这种怪病就有的治了。
网络开篇:从敲下回车到页面打开,中间发生了什么
地址栏回车到首屏渲染,中间藏着 DNS、三次握手、TLS、HTTP 四道关卡。分层不是面试八股,是排查 502 和超时的解剖刀——本系列二十篇,跟着一个请求把网络栈走一遍。