用 Raft 手搓 KV 存储(二):线性一致读与 Lease Read 的取舍
从一条丢包的 AppendEntries 讲起。本文实现并压测了支持 ReadIndex 与 Lease Read 的教学级 KV 存储,分析两种读策略在网络分区下的行为差异。
从一条丢包的 AppendEntries 讲起。本文实现并压测了支持 ReadIndex 与 Lease Read 的教学级 KV 存储,分析两种读策略在网络分区下的行为差异。
从一条丢包的 AppendEntries 讲起。本文实现并压测了支持 ReadIndex 与 Lease Read 的教学级 KV 存储,分析两种读策略在网络分区下的行为差异。
为什么你的 Future 在堆上反复横跳?用 perf 和火焰图追查 tokio 任务调度的真实开销,以及何时应该回到同步代码。
不是 GC,不是数据库,最后凶手是连接池里的 DNS 缓存。完整复盘从假设、埋点、压测到修复的全过程,附排查清单。
教学级 Raft KV 存储:MIT 6.5846 全实验的逐行注释实现,含 ReadIndex、Lease Read 与快照压缩,配套 7 篇图文解析。
基于 eBPF 的零拷贝网络延迟观测器:挂到内核上就能看到每个 syscall 的真实耗时,单核轻松扛住 10Gbps。
OpenTelemetry 尾部采样策略集:支持按错误码、延迟分桶与路由白名单组合采样,错误链路 100% 保留。
打磨六年的 Neovim / tmux / zsh 配置,一键繁殖脚本。内含一份「为什么这么配」的长篇 README,欢迎抄作业。
Go 1.23 的 range over func 真香,配合 iter 包写管道终于不用回调套回调了。周末整理一篇笔记。
把家里的 N100 小主机刷了 Proxmox,现在跑着 7 个容器 + 1 个 HomeLab 面板,整机功耗 6W,比路由器还安静。
面试被问「如何设计全局唯一 ID」,聊到 Snowflake 的时钟回拨时发现自己的答案有漏洞,回来重读了一遍 Twitter 原文,已补充到旧文里。