作品说明
大家好,这次带来的作品是《一剑传书,不入投票阵》。
我尝试用一段 15 秒的武侠动漫,把一个容易被忽略的 TiDB 知识点讲清楚:
TiFlash 会同步 TiKV 的数据副本,但它以 Raft Learner 身份工作,不参与多数派投票,因此 TiKV 的前台写入不需要等待 TiFlash 确认。
作品展示
- 时长:15 秒
- 形式:武侠动漫 + 分层 2D 动画
- 主题:TiFlash Raft Learner 的复制与投票机制
为了让 Raft Learner 更容易理解,我把技术组件映射成了一个武侠故事:
- 三名结阵侠客:代表 TiKV 的 Raft 投票副本。
- 三侠形成多数派:代表写入获得多数派确认后即可提交。
- 阵外御剑信使:代表 TiFlash Learner,只接收和复制数据,不参与投票。
- 远处藏经阁:代表 TiFlash 列存副本,数据同步完成后用于分析查询。
- 飞剑传书:代表数据从 TiKV 实时复制到 TiFlash。
因此,即使信使暂时落后,阵内仍然可以完成共识并继续处理交易。
为什么选择这个知识点
“TiFlash 会保存 TiKV 的副本”比较容易理解,但很多人第一次接触时会产生一个问题:
既然 TiFlash 也需要同步数据,TiKV 写入是不是还要多等一个副本?
答案是不需要。
TiFlash 副本采用特殊的 Raft Learner 角色进行异步复制。Learner 不进入多数派投票计数,所以 TiFlash 节点故障或者网络延迟时,TiKV 侧的应用仍然可以正常运行。
读取 TiFlash 时,系统会通过复制进度校验保证相应时间戳的数据已经同步,从而提供一致性读取。
AIGC 创作过程
本作品使用了以下工具:
- ChatGPT:创意构思、技术内容梳理和动画脚本。
- Codex:互动页面开发、动画分层、运动轨迹与成片制作。
- OpenAI 图像生成:武侠动漫人物、月夜场景和透明人物图层。
- FFmpeg 与 Pillow:视频合成、光轨动画、阵法脉冲、字幕与 30 FPS 编码。
制作过程中经历了多次调整:从静态动漫画面,到简化场景元素,再将御剑人物从背景中独立出来,最终实现人物横穿画面、阵法旋转、飞剑光轨以及藏经阁面板依次点亮。
AIGC 使用声明
本作品使用 AIGC 辅助完成视觉素材、文案构思和代码实现。知识点选择、技术校验、视觉取舍、动画调整和最终审核均由本人参与完成。
互动页面属于原理可视化模拟,不连接真实 TiDB 集群,也不代表实际性能测试结果。
参考资料
- TiFlash Overview
- Quick Start with TiDB HTAP
欢迎大家体验,也欢迎指出技术表述或动画呈现中可以继续改进的地方。