- 博客(7)
- 收藏
- 关注
原创 Kafka详解,读这一篇就够了
HW 截断 + Leader 切换的组合在某些时序下会丢数据或日志不一致数据丢失场景:副本 A 落后但被踢出 ISR,期间 HW 已推进,A 重新加入后按 HW 截断,丢失本该保留的数据KIP-101 引入:每个 Leader 任期一个 epoch 号 + 起始 offset,Follower 重连时先查 epoch 校验"这段日志在哪个 Leader 任期是否有效",按 Leader Epoch 而不是 HW 截断——彻底修复,面试讲这个是深度信号。
2026-10-03 22:55:49
227
原创 RocketMq详解 读这一篇就够了
fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;mmap PageCache 或 DirectByteBufferReputMessageService (~1ms 异步分发)ReputMessageService (~1ms 异步分发)定位 → commitLogOffsetProducer 发送CommitLog 顺序写磁盘。
2026-10-02 09:58:13
381
原创 JVM 分代 ZGC 深度解析:从染色指针到双代并发回收
单代 ZGC 解决了“停顿与堆大小无关”,分代 ZGC 在此基础上解决了“GC 的 CPU 开销与堆大小成比例”的问题——用弱分代假设把绝大多数回收工作压缩到一个小得多的年轻代里完成。
2026-10-01 11:17:17
370
原创 JVM ZGC 垃圾回收器深度解析
G1/CMS 用的是写屏障(在引用赋值时拦截,维护卡表/RSet),因为它们要解决的是"引用关系变了,我该记录谁"。对象可能已被搬走,我读到的指针可能是过期的——所以拦截点必须在读引用的动作上。每当业务线程执行从堆中加载一个对象引用obj.field// 伪代码// 1. 加载引用= 预期颜色) { // 2. 检查染色位(一次寄存器位测试,几条指令)// 3. 过期 → 进入慢路径// 继续使用 ref(保证一定是"好"颜色)把 STW 的工作一项一项搬到并发世界。
2026-10-01 10:38:07
365
原创 JVM G1(Garbage First)垃圾回收器深度解析
Region 化让"部分回收"成为一等公民——不再"要么不收、要么整代收",任意子集都可以成为回收集,这是可控停顿的物理基础SATB + RSet 让并发标记和部分回收在工程上可行——代价是更多浮动垃圾和 RSet 内存/写屏障开销,G1 用这些换来了停顿可控预测模型让停顿从"碰运气"变成"谈条件"——运维第一次可以对 JVM 说"我要 XX ms 的停顿",JVM 用缩小回收范围来兑现。
2026-09-30 19:39:59
256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅