作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿( 五 )


主备倒换:提高可靠性 > 应对个别数据库宕机场景,尤其主库宕机 。

作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿

文章插图
主备倒换
说明:DB2主库宕机后,自动将主库转为DB3 。
核心问题:
数据的备份同步问题:binlog 参考4.4.3 。检测数据库的在线状态:心跳机制 。4.3.3 数据备份与同步
当只有单机或者一份数据时 , 一但数据库出问题 , 那么整体服务将不可用,而且更严重的是会造成数据损害丢失不可逆 。
在读写分离与主备倒换的场景下,核心要解决的是多个数据库的数据同步与备份问题 。
当前主流的是采用日志备份方式(redis也类似) 。
实现原理:binlog日志备份 。
作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿

文章插图
数据备份:bin-log同步
说明:
主库负责写操作,在数据变更时,会写入binlog , 同时通知各从库 。从库收到通知后,IO线程会主动过来读取主库的binlog,并写入自己的log 。写完从库log后,通知sql线程,sql线程读取自己的日志 , 写入从库 。4.3.4 动态扩容
动态扩容的意义在于:随着后期业务量增大,数据库个数可以通过增多的方式来应对,而相对的改造代价很小 。
扩容前:
作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿

文章插图
扩容后:
作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿

文章插图
核心内容:
在添加新库时注册机器与库路由算法调整:固定哈希算法-调整模数/一致性哈希算法天然支持扩容可选的权重调整修改权重 , 数据插入偏向于新库5 。在各库数量平衡时,触发修改回原来平衡的权重,以保证后续的均衡分配 。五 架构成型
sql流向
下图介绍sql从流入TDD到流入数据库,期间TDDL各模块对Sql的处理 。
作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿

文章插图
架构图
作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿

文章插图
下图介绍了TDDL三层的位置以及作用 。
作为数据库核心成员如何让淘宝不卡顿一点,淘宝app卡顿

文章插图
核心能力图
TDDL 核心能力,核心组建示意图,其中标出了各模块核心要解决功能,核心算法等 。