数据层扩展

官官方信息技术老师·7 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

数据层扩展

系统设计与场景题 · 第 3 章 中间件与稳定性

按 空格/→ 演示下一步

问一句
1 / 7 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

数据层扩展

系统设计与场景题 · 第 3 章 中间件与稳定性

1第 1 页 · 数据层扩展

读写分离

写主读从,读能力横向扩:代价是主从延迟,「读己之写」要特别路由。

主从复制
主写 binlog 从库重放,读流量分流
复制延迟
写后立即读,可能读到旧数据
读己之写
关键读强制走主,或会话内短暂粘主
2第 2 页 · 读写分离

分库分表策略与跨分片问题

量到千万就该拆:垂直按业务、水平按行,分片键选定,跨片查询是代价。

垂直与水平
垂直按业务拆库,水平按分片键拆行
分片键
选高频查询条件,让请求尽量落单片
跨片代价
跨片 join、聚合、事务,能避则避
3第 3 页 · 分库分表策略与跨分片问题

冷热分离与归档

九成查询打在少数新数据上:冷数据搬家归档,主库轻装上阵。

冷热界定
按时间或状态划线,冷库只进不改
归档迁移
批量搬迁、校验、再删除,查询路由灰度切换
4第 4 页 · 冷热分离与归档

Elasticsearch 检索与数据

复杂查询交给 ES:binlog 监听同步,最终一致换搜索自由。

倒排索引
分词倒排,全文检索毫秒级响应
同步链路
binlog 采集经 MQ 入 ES,免双写不一致
一致性取舍
秒级延迟换检索能力,冲突以 DB 为准
5第 5 页 · Elasticsearch 检索与数据

本节要点

  • ✓读写分离:读扩容,防延迟坑
  • ✓分片键定生死,跨片能避则避
  • ✓冷热分离让主库轻装
  • ✓ES 接检索,binlog 同步链路
延伸主题:设计一次分库分表方案搭一条 binlog 同步链路
6第 6 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1分片键为什么是「一选定生死」?

参考答案分片键决定数据分布与查询路由:选错则热点倾斜、多数查询全片广播。要看最高频查询的过滤条件来选,让绝大多数请求落在单片内——改分片键意味着数据大迁移。

2读写分离的「读己之写」问题有哪些解法?

参考答案关键读强制走主库;写后短窗口内该用户会话粘主;或记录写入位点、从库追到位点才放行读。按业务容忍度选,越往后越精细也越复杂。

3DB 与 ES 的同步为什么推荐 binlog 而不是双写?

参考答案双写无法保证原子性,一边成功一边失败就是永久不一致。binlog 是数据库变更的唯一事实流,订阅重放天然有序、可重放,且对业务代码零侵入。

7第 7 页 · 课后思考