3. 扩展性:通过提升网关能力或者个数来提升计算能力 , 增加MySQL节点数然后调整数据分布来提升计算和存储能力 。
4. 运维:异常时 , 可能出现主备由于数据不一致导致同步服务中断 , 需要修复 。
C. 分布式数据库 GoldenDB
文章插图
架构上也是分库分表 , 跟DRDS原理基本相同 。
D. 分布式数据库 MyCat
文章插图
架构原理和功能跟前面两类基本相同 。底层存储节点还支持Oracle和Hive 。
E. 分布式数据库 HotDB
文章插图
5. 分布式数据库A. google的F1
文章插图
文章插图
说明:
1. F1支持sql , 底层可以支持MySQL和Spanner 。选择Spanner原因主要是Spanner不需要手动分区、使用Paxos协议同步数据并保证强一致以及高可用 。
2. Spanner分为多个Zone部署 。每个zone有一个zonemaster(管理元数据和spannerserver)、多个spannerserver 。
3. Spanner的数据存储在tablet里 , 每个tablet按固定大小切分为多个directory 。Spanner以directory为单位做负载均衡和高可用 , paxos group是对应到directory的 。
4. Spanner的TrueTime 设计为分布式事务实现方案提供了一个新的方向(分布式MVCC) 。
B. PingCap的TiDB
TiDB主要是参考Google的Spanner和F1的设计 , 架构上有很多相似的地方 。
文章插图
文章插图
架构说明:
1. TiDB server负责处理SQL并做路由 。无状态 , 可以部署多个节点 , 结合负载均衡设计对外提供统一的接入地址 。
2. PD Server 是集群的管理模块 , 存储元数据和对TiKV做任务调度和负载均衡 , 以及分配全局唯一递增的事务ID 。
3. TiKV Server 是存储节点 , 外部看是Key-Value存储引擎 , 表数据自动按固定大小(如20M , 可配置)切分为多个Region分散在多台TiKV Server上 。Region是数据迁移和高可用的最小单位 , Region的内容有三副本 , 分布在三个区域 , 由Raft协议做数据同步和保证强一致 。
4. 支持分布式事务 , 最早实现全局一致性快照 。支持全局一致性备份 。
5. 兼容MySQL主要语法 。
功能:
1. 可用性:计算节点无状态部署 , 结合负载均衡设计保证高可用和负载均衡 。存储节点是三副本部署 , 使用Raft协议维持三副本数据一致性和同步 , 有故障时自动选举(高可用) 。
2. 扩展性:计算和存储分离 , 可以单独扩展 。存储节点扩展后 , 数据会重新分布 , 应该是后台异步任务完成 , 不影响业务读写 , 可以在线扩容 。可以用于做异地容灾 , 两地三中心异地多活(三机房之间网络延时很小)
3. 数据一致性:计算节点故障不会导致数据丢失 , 存储节点故障会自动选举 , 新的leader跟老的leader数据是强一致的 。
C. Alipay的OceanBase
OceanBase的设计思路跟Spanner类似 , 但在SQL、存储、事务方面都有自己的创新 。
文章插图
架构说明:
1. 目前版本计算和存储都集中在一个节点上(PC , OBServer)上 , 单进程程序 , 进程包括SQL引擎和存储引擎功能 。
2. 表数据存在一个或多个分区(使用分区表) , 需要业务指定分区规则 。分区是数据迁移和高可用的最小单位 。分区之间的一致性是通过MultiPaxos保证 。
3. 支持分布式事务、2.x版本支持全局一致性快照 。支持全局一致性备份 。
4. 兼容MySQL主要用法和Oracle标准SQL用法 , 目前正在逐步兼容Oracle更多功能 。如存储过程、游标和Package等 。目标是兼容Oracle常用功能以实现去IOE时应用不修改代码的目标 。
5. 有多租户管理能力 , 租户弹性扩容 , 租户之间有一定资源隔离机制 。
6. 应用可以通过一个反向代理obproxy或者ob提供的connector-JAVA访问OceanBase集群 。
推荐阅读
- 软件即服务 架构师必备技能指南:SaaS架构设计
- 男人保肾护肝必备三种茶
- 程序员经典面试题,谈一谈Mysql中的事务
- 三款夏季坐月子食谱 产后妈妈必备
- 茶叶选购必备技能
- 后端开发必备的 RestFul API 知识
- Java程序计数器刨根问底,大部分程序员都收藏起来了
- 松萝茶,消食解腻的必备品
- 程序员是吃青春饭的么?
- 熬夜看球必备,枸杞普洱茶