整体架构
Yugabyte通过一组节点(可以是VM、Docker、逻辑)组成的集群对外提供数据库服务。
Yugabyte有两组服务:Master和TServer:
- Tserver负责用户数据的存储和访问;
- Master负责存储元数据信息,以及提供数据库的创建、删除等功能;同时负责数据负载均衡控制、TServer故障处理等。
分层设计
1. 协议解析层
yugabyte的协议解析层(又称作YQL层)提供对外的API接口,负责直接与客户端驱动进行通信,以可扩展的方式进行实现,目前支持SQL和CQL接口
2. DocDB层
DocDB实现了一个分布式文档存储
- 强一致的数据写入;
- 自动分片和负载均衡;
- 基于MVCC的分布式事务;
- 可靠的数据存储;
2.1 事务层
- 基于多版本的并发控制
- Repeatable Read(SI)和Serializable两种隔离级别
- 分布式事务控制
2.2 数据分布层
- 支持基于hash和range的分片策略
- 支持tablet分裂
- 提供并置表支持
2.3 数据复制层
- 基于raft实现
- 提供cdc支持
2.4 存储层
基于rocksdb