模块四:存储架构模式
数据库存储架构
数据库读写分离
复杂度
复制延迟问题,数据写入主机后同步到其他机器需要时间
任务分解,将读操作发给不同的从机
复制延迟问题解决方法
写操作之后,立刻发给从机。(业务入侵大,容易留坑)
由于延时导致从机读与主机数据不一致,所以读失败后要重读一次。(主机读压力变大)
关键业务读写主机,非关键业务写主机,读从机。(编码人员容易全部读写主机)推荐
任务分解解决方式
1.采用 sharding-jdbc。
2.中间件封装模式,实现复杂,独立服务器,需要实现连接管理。维护负责,需要独立部署。
数据库分库分表
原理:由于读写分离采用主从机,存在数据库性能和存储瓶颈。
分库
说明:将表分到不同的数据库服务器。
问题及解决方法
join 问题:小表冗余,代码 join,字段冗余
事务问题:2pc 方式,3pc 方式
分表
说明:将一个表拆分成多个表。
适用场景:增长过快,单表超过 2000 条
方式
垂直拆分:按列拆分,提升单机处理性能
水平拆分:按行拆分,提示系统处理性能
问题及解决方法
一个表数据分布多个服务器产生的问题怎么解决,采用 sharding-jdbc 解决。
数据库复制架构
高可用存储衡量指标
rpo:最大可接受的数据损失
rto:恢复时间目标,系统恢复时间
wrt:工作恢复时间,系统业务恢复正常的时间
mtd:rto+wrt,最大可容忍宕机时间
主备复制:正常时候,备机只提供数据复制,将数据备份,只要主机故障时,才会人工切换到备机。
主从复制:正常时候,从机会提供读的功能,而且主机会数据复制到从机上。
主备级联复制:主备的变种,解决的问题为主机故障后,备机都无法用的问题,但是出现另一个问题是备机 1 非常关键,备机 1 宕机,后面的备机机都失败。
主备架构的灾备部署:主要解决城市级别的灾难。
集群选举:当主机宕机时,集群选举会自动选取一台从机作为主机。自动实现故障恢复,rtp 短,可用性更高。
评论