架构师训练营第 6 周学习总结
分布式数据库
数据库分片
硬编码实现分片
映射表外部存储
分布式数据库中间件
Mycat
Amoeba/Cobar
扩容策略
类似Redis Pre-Sharding,提前规划好schema,方便后续的迁移
数据库的部署方案
单一服务器与单一数据库
主从复制实现伸缩
两个Web服务 及两个数据库(垂直切分,比如微服务一个服务对应一个数据库)
综合部署,不同服务采用不同的数据库集群方案,其实同样的也可以采用异构的数据库方案
NOSQL
CAP定理
在一个分布式系统(指互相连接并共享数据的节点的集合)中,当设计读写操作时,只能保证一致性(Consistence)、可用性(Availablity)、分区容错性(Partition Tolerance)三者中的两个,另外一个必需被牺牲。
CAP原理与最终一致性
最终一致性写冲突
简单冲突处理策略:根据时间戳,最后写入覆盖
客户端冲突解决
客户端合并?
投票解决冲突(Cassandra)
写入时,尝试写入三个节点,等待至少两个节点向响应成功。
读取时,尝试从三个节点读取。等待至少两个节点返回,取最新版本。
HBase的架构
ACID与BASE
ACID:原子性、一致性、隔离性、持久性
BASE:基本可用,软状态,最终一致性
分布式一致性Zookeeper
分布式系统脑裂
数据库主主备份
分布式一致性算法PAXOS
Zookeeper架构
Zab协议
Zookeeper性能
评论