这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
对课程中学到的重要知识点做了笔记,方便后续的回顾
1. 经典案例
1.1 一致性(Consistency)
数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
1.2 隔离性(Isolation)
数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
1.3 持久性(Durability)
多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
1.4 持久性(Durability)
在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。
1.5 高并发
1.6 高可靠、高可用
2. 发展历史
2.1 前DBMS时代-人工管理
结绳记事 清代钱庄账本 用于1890年人口普查的霍列瑞斯式的打孔机
2.2 前DBMS时代-文件系统
1950s,现代计算机的雏形基本出现。1956年IBM发布了第一个的磁盘驱动器--Model 305 RAMAC,从此数据存储进入磁盘时代。在这个阶段,数据管理直接通过文件系统来实现。
写到纸上变成写到文件里,变了个马甲
2.3 DBMS数据模型
1960s,传统的文件系统已经不能满足人们的需要,数据库管理系统(DBMS)应运而生。DBMS:按照某种数据模型来组织、存储和管理数据的仓库。
所以通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。
2.3.1 DBMS数据模型–网状模型
多对多的关系
2.3.2 DBMS数据模型–层次模型
每个子节点,只有一个父节点
2.3.3 DBMS数据模型-关系模型
2.3 SQL语言
- 结构化语言,不是过程化语言
- 只是说要去干什么样的事情,不用去说具体怎么去干这件事
2.4 历史回顾
3. 关键技术
万变归宗:无论RDBMS如何演变,其核心都是SQL引擎、存储引擎、事务引擎。
4. 企业实践
4.1 红包雨挑战
-
活动统计
- 共计发放红包20亿元
- 总计发放卡券24亿
- 张拜年红包补贴12.9亿
-
流量统计
- 活动钱包:400w/s
- 发红包:300w/s
- 发奖券:400w/s
4.2 大流量-Sharding
- 问题背景
- 单节点写容易成为瓶颈
- 单机数据容量上限
- 解决方案
- 业务数据进行水平拆分
- 代理层进行分片路由
- 实施效果
- 数据库写入性能线性扩展
- 数据库容量线性扩展
4.3 流量突增-扩容
- 问题背景
- 活动流量上涨
- 集群性能不满足要求
- 解决方案
- 扩容DB物理节点数量
- 利用影子表进行压测
- 实施效果
- 数据库集群提供更高的吞吐
- 保证集群可以承担预期流量
4.4流量突增一代理连接池
- 问题背景
- 突增流量导致大量建联
- 大量建联导致负载变大,延时上升
- 解决方案
- 业务侧预热连接池
- 代理侧预热连接池
- 代理侧支持连接队列
- 实施效果
- 避免DB被突增流量打死
- 避免代理和DB被大量建联打死
4.5 高可用&高可靠
4.5.1 3AZ高可用
4.5.2 HA管理
课后个人总结
- 了解了RDBMS的发展历史
- 了解了在字节跳动内部怎样应对实际的流量突增问题