信息技术大学
数据层扩展
系统设计与场景题 · 第 3 章 中间件与稳定性
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
信息技术大学
数据层扩展
系统设计与场景题 · 第 3 章 中间件与稳定性
读写分离
写主读从,读能力横向扩:代价是主从延迟,「读己之写」要特别路由。
主从复制
主写 binlog 从库重放,读流量分流
复制延迟
写后立即读,可能读到旧数据
读己之写
关键读强制走主,或会话内短暂粘主
分库分表策略与跨分片问题
量到千万就该拆:垂直按业务、水平按行,分片键选定,跨片查询是代价。
垂直与水平
垂直按业务拆库,水平按分片键拆行
分片键
选高频查询条件,让请求尽量落单片
跨片代价
跨片 join、聚合、事务,能避则避
冷热分离与归档
九成查询打在少数新数据上:冷数据搬家归档,主库轻装上阵。
冷热界定
按时间或状态划线,冷库只进不改
归档迁移
批量搬迁、校验、再删除,查询路由灰度切换
Elasticsearch 检索与数据
复杂查询交给 ES:binlog 监听同步,最终一致换搜索自由。
倒排索引
分词倒排,全文检索毫秒级响应
同步链路
binlog 采集经 MQ 入 ES,免双写不一致
一致性取舍
秒级延迟换检索能力,冲突以 DB 为准
本节要点
- ✓读写分离:读扩容,防延迟坑
- ✓分片键定生死,跨片能避则避
- ✓冷热分离让主库轻装
- ✓ES 接检索,binlog 同步链路
延伸主题:设计一次分库分表方案搭一条 binlog 同步链路
课后思考
先自己回答,再展开参考答案——能讲出来才算真懂。
1分片键为什么是「一选定生死」?
参考答案分片键决定数据分布与查询路由:选错则热点倾斜、多数查询全片广播。要看最高频查询的过滤条件来选,让绝大多数请求落在单片内——改分片键意味着数据大迁移。
2读写分离的「读己之写」问题有哪些解法?
参考答案关键读强制走主库;写后短窗口内该用户会话粘主;或记录写入位点、从库追到位点才放行读。按业务容忍度选,越往后越精细也越复杂。
3DB 与 ES 的同步为什么推荐 binlog 而不是双写?
参考答案双写无法保证原子性,一边成功一边失败就是永久不一致。binlog 是数据库变更的唯一事实流,订阅重放天然有序、可重放,且对业务代码零侵入。