架构实战营模块四总结
一、数据库存储架构
1.数据库读写分离架构
数据库读写分离,复制延迟的解决办法:
a.读写绑定:写操作后的读操作指定发给数据库主服务器
b.二次读取:读从机失败后在读取一次主机
c.业务分级:关键业务读写操作全部指向主机,非关键业务采用读写分离
使用 Sharding JDBC 进行程序代码封装
中间件封装
2.数据库分库分表架构
数据库分库带来的问题:
a.join 问题:原本在同一个数据库中的表分散到不同的数据库中,导致无法使用 SQL 的 join 进行查询。解决方法:小表冗余;代码 join;字段冗余;
b.事务问题:表分散到不同的数据库中,无法通过事务统一修改;方法:通过分布式事务解决
数据库分表
水平拆分:按行拆分,提升系统性能;水平分表伸缩瓶颈,当 MYSQ 连接在 50 到 100 之间时,性能最高。
垂直拆分:按列拆分,提升单机性能
3.数据库分布式事务算法
2PC :2 阶段
3PC: 3 阶段
外部 XA:跨多 MYSQL 实例的分布式事务,由应用程序代码作为 2PC 的事务协调者
内部 XA:跨同一实例多存储引擎的事务,由 binglog 作为 2PC 的事务协调者
4.万事不绝 spring, 选择太多 APACHE
二、存储架构模式—复制架构
1.高可用关键指标
2.主从 &主备架构(需要人工切换)
Redis 是主从架构,由 master 和 slave 组成,任务分解由客户端 Jedis 或 redition 进行,
3.双机切换架构(自动切换)
应用于内部系统和管理系统,读写请求量小,
4.集群选举架构
当主机发生故障时,可以通过选举,产生新的主机。
Redis 采用 sentinel 监控各个节点,sentinel 通过 raft 算法进行选举。
Mongdb 通过 bully 算法进行选举
5.四个算法比较
Bully:谁的 ID 最大或最小,最当老大,elasticsearch 用到;
Raft:分布式一致协议,mogodb 用到;
Zab:分布式一致协议,zookeeper 用到;
Paxos:分布式一致协议,oceanbase 用到;
6.zookeeper 在 HDFS 中的应用
基于 zookeeper 进行双机切换或集群选举
三、分片架构和分区架构
1.通过叠加服务器,提升写性能和存储性能
2. 分片规则:数据按什么规则分片
核心原则:选择基数比较大的某个数据键值,让数据均匀分布,避免热点分片
主键:适合主业务数据,例如用户 ID,订单 ID,
分片规则:hash 分片
3. 路由规则:业务服务器如何找到数据
静态路由:配置文件
动态路由:配置中心;路由转发
2.路由转发
4.独立备份和相互备
5.分区架构:分区到不同城市
DNS:标准协议,通用,但基本只能实现就近接入的路由
GSLB:非标准,需要独立开发部署,功能非常强大,可以做状态监控、基于业务规则的定制路由。
6. 集中式、互备式和独立式
四、如何设计存储架构
1.架构设计三个步骤
a.估算性能需求:存储量、读写性能
b.选择存储系统:根据技术储备和方案优缺点
c.设计存储方案:设计具体的存储方案
2.估算存储所需性能
用户量预估--->用户行为建模----->性能需求计算
3.用户量估计:规划--->推算-->对比
4.用户行为建模:行为、数量和频率
5.存储性能估算:数据量、请求量和预留量
6.存储架构选择
7.常见的存储系统
8.如何选择合适的存储系统
技术本质(挑选应用场景和系统本质契合的系统)à技术储备(挑熟悉的)à综合考虑(可维护性、成本和成熟度)
9.如何设计存储方案
Redis 粉丝数量存储
设计数据结构----验证读写场景----评估读写性能
五、常见的存储系统
1.理解技术本质------明确部署架构------研究数据模型-----模拟业务场景
2.redis
Database; cache; message broker
单机 TPS:5~10 万
技术本质:主从复制,读写分离,master 故障时,sentinel 自动切换。
支持 5 种数据类型:Set; sorted set; hash table ; linked list ; string
使用案例:关注列表,使用关注时的 timestamp 作为 score,使用 sorted set 结构存储
3.Hbase
非关系型数据,基于 hadoop hdfs,底层结构 LSM
每秒插入 7 万条,读取 2.5 万条,扫描 100 条以内记录,每秒 1.5 万条。
HBase 部署架构:
技术本质----分片集群;ZooKeeper 做 HMaster 切换,RegionServer 由 Hmaster 管理
数据模型
4.HDFS
分布式文件存储,带宽是瓶颈。
部署架构
5.Clickhouse
Column-oriented:列式存储(读取性能高); DBMS 数据库管理系统; OLAP 场景
OLAP:联机分析处理,执行少量复杂查询,关注吞吐量,很少修改数据。
OLTP:联机事务处理,执行大量增删改查,关注响应速度,高并发、数据一致性。
行式存储:表中的一行记录存储在一个数据块中
列式存储:表中的一列数据存储在一个数据块中
6.Clickhouse 集群架构
分片集群;zookeeper 管理,分片独立复制
评论