后端架构

Sentinel 集群限流 Token Server 挂了,我们在控制台侧做了本地降级,压测数据验证了容灾效果

Sentinel 集群限流依赖的 Token Server 一旦宕机,业务易陷入无保护状态。团队在控制台侧增加健康检查与本地降级逻辑,检测到 Server 不可用时,自动将集群规则转换为单机限流规则并推送至客户端。压测验证显示,该方案能将故障时的错误率从 12% 降至 0.3%,有效防止链路崩溃,且无需改造业务应用。

后端架构

我在 gRPC 拦截器里把重试、超时、熔断串成一条链,业务代码终于不用再贴满重复的容错片段了

gRPC 调用中重试、超时、熔断逻辑常被重复编写,导致业务代码臃肿。通过将三者拆分为独立拦截器,并按熔断→超时→重试的顺序串联成链,可形成单向流动的容错链路。熔断器避免无效调用,超时控制整体耗时,重试在时间窗口内执行。最终业务代码大幅精简,系统延迟降低,冗余容错模板被彻底消除。

全栈工程化

你的 UI 测试脚本是不是也写了一堆 findElement 然后改版就全崩

UI 自动化测试失败的主因并非断言错误,而是定位器硬编码导致页面微调即崩溃。核心解决思路是建立分层防御:页面对象模型应暴露用户行为而非元素,定位器优先使用`data-testid`等稳定属性,等待逻辑需封装在框架层。测试数据必须自给自足,通过API准备以避免级联失败。还需引入组件化抽象复用交互逻辑,并完善失败诊断信息,记录URL、DOM快照等上下文。

后端架构

从延迟、积压、分区倾斜三个指标反推 Pulsar 容量规划,比盯着 CPU 内存管用得多

从业务指标出发,重新定义 Pulsar 容量规划:核心应关注生产延迟、消费积压和分区倾斜度,而非 CPU 或内存。生产延迟揭示 Broker 的 Topic 承载上限与 Bookie 磁盘瓶颈;消费积压增速可反推 Consumer 与分区配比;分区倾斜度则能暴露隐藏热点。三者联动构成决策树,将规划单位从节点细化到分区,能更精准地保障系统延迟与稳定性。

后端架构

同一套压测场景,滑动窗口和令牌桶在突发流量下的延迟分布差了一个数量级

同一套压测条件下,令牌桶 P99 延迟仅 23ms,滑动窗口却飙到 310ms。核心差异在于滑动窗口的刚性时间边界导致请求周期性积压,而令牌桶的连续令牌发放避免了“一刀切”延迟。压测数据、根因分析和 Lua 脚本实现均证实,突发流量场景下令牌桶的延迟分布远优于滑动窗口。

后端架构

RocketMQ 顺序消息靠分区有序,真碰上需要全局强顺序的业务,加个业务层序号成本到底高多少

RocketMQ 的顺序消息仅支持分区有序,无法实现全局有序。强行在业务层通过全局序号、排序缓冲区、去重和断点续跑等机制实现全局顺序,会带来显著的状态管理、测试和运维复杂度,成本远高于直觉。更优方案是采用单线程顺序消费加异步分发,或换用原生支持全局顺序的中间件。

后端架构

BEST 实测了 Kafka MirrorMaker 和 Pulsar 异地复制的容灾切换时间,RPO 的差距比预想的大

Kafka MirrorMaker 2与Pulsar异地复制在AWS跨区域容灾场景下的实测对比显示,RTO差距不大(秒级),但RPO差异显著:Pulsar基于存储层同步复制实现RPO=0,代价是延迟增加6.5倍;MirrorMaker 2的异步架构导致RPO波动最高达11秒,极端场景可能丢失数万条消息。架构设计决定了容灾能力上限,金融级场景需权衡一致性与延迟。

后端架构

排查缓存问题我一般就靠慢查询、热 Key 分析和命中率曲线这三板斧,基本能把事故现场还原出来

缓存故障排查靠三板斧:慢查询日志、热Key分析和命中率曲线。慢查询要关注命令类型、Key模式和时间分布,O(N)命令直接定性为缺陷。热Key分析需区分读多写少和频繁更新场景,警惕伪热Key。命中率曲线重点看断崖式下跌和缓慢下降,区分整体与核心业务命中率。事故还原按慢查询、命中率、热Key顺序排查,可覆盖95%故障场景。

后端架构

模拟 Redis 挂了、数据刚好过期、100 个请求同时打进来,这套单元测试怎么搭

缓存层重构的关键在于用可控的 Mock Redis Client 精确模拟异常态,而非简单返回 null。通过接口化底层操作,可模拟缓存未命中、连接超时和数据过期三种场景,并利用并发原语发起 100 个请求,验证数据库仅穿透一次。测试需覆盖雪崩延迟、脏数据清理等边界情况,并集成到 CI 中,开启 race detector 以捕获竞态条件。

后端架构

Kafka 的 Exactly-Once 语义听着很美,在跨系统场景下我还是老老实实上了业务去重表

Kafka 的 Exactly-Once 语义仅保证其内部消息不丢不重,一旦消费端涉及数据库、缓存或第三方 API 等外部系统写入,该承诺即失效。文章通过订单分账踩坑案例,剖析了跨系统场景下的重复处理根因,并给出基于数据库唯一索引的业务去重表方案,实现业务层真正的“恰好一次”处理。