Bootstrap

架构师训练营第 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性能