Vitess云原生数据库系统

联合创作 · 2023-09-30 20:34

Vitess 云原生数据库系统是用于部署、扩展和管理大型 MySQL 实例集群的数据库解决方案。它是一个分布式 MySQL 工具集,它可以自动分片存储 MySQL 数据表,将单个 SQL 查询改写为分布式发送到多个 MySQL Server 上,支持行缓存(比 MySQL 本身缓存效率高)与复制容错等。

Vitess 最初是 YouTube 于 2010 年创建的内部解决方案,2018 年进入 CNCF 孵化。GitHub、JD.com、Pinterest、Slack、Square、Stitch Labs 与 YouTube 等公司正在生产和部署的各个阶段中使用 Vitess。

Vitess 可解决以下问题:

  1. 支持您对 MySQL 数据库进行分片来扩展 MySQL 数据库,应用程序无需做太多更改。
  2. 从物理机迁移到私有云或公共云。
  3. 部署和管理大量的 MySQL 实例。

特性

  • 性能提升

    • 连接池 - 将前端应用程序以多路复用的方式映射到MySQL连接池以优化性能。
    • 查询结果重用 – 对于相同结果集的查询,多个查询并发查询时,vttablet会识别和管理相同查询,等待第一个查询结果完成,并发送给所有的调用者。
    • 事务管理 – 限制并发事务数、管理事务超时时间以优化总体吞吐量。
  • 保护机制

    • 查询重写和清理 – 避免漫无目的的更新,对大查询添加limits。
    • 查询黑名单 – 可通过自定义规则以防止可能存在问题的查询命中数据库。
    • 查询超时 – 可自定义查询超时时间值,Vitess将干掉超时的查询。
    • 表别访问权限控制定义 – 可以针对不同的接入用户指定表的访问控制权限 (ACLs)。
  • 监控

    • 性能分析: Vitess提供工具可让您监控,诊断和分析数据库性能。
    • 流式查询 – 使用传入查询列表来提供OLAP工作。
    • 更新流 – 服务器流式传输数据库中更改的行列表,可用作将更改传播到其他数据存储的机制。
  • 拓扑管理工具

    • Master管理工具(用于reparent处理)
    • 基于Web GUI的管理端
    • 可工作于多个数据中心/区域的设计
  • 拆分

    • 几乎无缝的动态分片拆分
    • 支持垂直和水平分片拆分
    • 多种分片方案,支持自定义分片方案

架构

下图说明了 Vitess 的组件

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报