Vitess云原生数据库系统
Vitess 云原生数据库系统是用于部署、扩展和管理大型 MySQL 实例集群的数据库解决方案。它是一个分布式 MySQL 工具集,它可以自动分片存储 MySQL 数据表,将单个 SQL 查询改写为分布式发送到多个 MySQL Server 上,支持行缓存(比 MySQL 本身缓存效率高)与复制容错等。
Vitess 最初是 YouTube 于 2010 年创建的内部解决方案,2018 年进入 CNCF 孵化。GitHub、JD.com、Pinterest、Slack、Square、Stitch Labs 与 YouTube 等公司正在生产和部署的各个阶段中使用 Vitess。
Vitess 可解决以下问题:
- 支持您对 MySQL 数据库进行分片来扩展 MySQL 数据库,应用程序无需做太多更改。
- 从物理机迁移到私有云或公共云。
- 部署和管理大量的 MySQL 实例。
特性
-
性能提升
- 连接池 - 将前端应用程序以多路复用的方式映射到MySQL连接池以优化性能。
- 查询结果重用 – 对于相同结果集的查询,多个查询并发查询时,vttablet会识别和管理相同查询,等待第一个查询结果完成,并发送给所有的调用者。
- 事务管理 – 限制并发事务数、管理事务超时时间以优化总体吞吐量。
-
保护机制
- 查询重写和清理 – 避免漫无目的的更新,对大查询添加limits。
- 查询黑名单 – 可通过自定义规则以防止可能存在问题的查询命中数据库。
- 查询超时 – 可自定义查询超时时间值,Vitess将干掉超时的查询。
- 表别访问权限控制定义 – 可以针对不同的接入用户指定表的访问控制权限 (ACLs)。
-
监控
- 性能分析: Vitess提供工具可让您监控,诊断和分析数据库性能。
- 流式查询 – 使用传入查询列表来提供OLAP工作。
- 更新流 – 服务器流式传输数据库中更改的行列表,可用作将更改传播到其他数据存储的机制。
-
拓扑管理工具
- Master管理工具(用于reparent处理)
- 基于Web GUI的管理端
- 可工作于多个数据中心/区域的设计
-
拆分
- 几乎无缝的动态分片拆分
- 支持垂直和水平分片拆分
- 多种分片方案,支持自定义分片方案
架构
下图说明了 Vitess 的组件
评论