深入理解开源数据库中间件 Vitess 核心特性以及如何进行数据存储的堆叠

本文深入探讨开源数据库中间件Vitess的核心特性,包括在Kubernetes和本机硬件上的部署,与Vanilla MySQL和NoSQL的对比,以及其性能优化、防御机制、监控工具和分片策略。Vitess提供了如连接池、查询重写、事务管理器和行缓存等高级功能,并具备查询黑名单、查询杀手和表ACLs等安全措施。此外,它还提供丰富的拓扑管理和监控功能,支持无缝分片,适用于多数据中心/区域环境。
摘要由CSDN通过智能技术生成
               

概述

Vitess 是一个用于 MySql 扩展的数据库解决方案。它以能够像运行在专用硬件上那样有效地运行于云体系。它集 MySql 数据库的很多重要特性和 NoSQL 数据库的可扩展性于一体。Vitess 已经成功侍服了 2011 年以来所有的 YouTube 数据库流量。

Kubernetes 上的 Vitess

Kubernetes 是 Google 开源的 Docker 容器集群管理系统,Vitess 是 Kubernetes 用户的逻辑存储引擎的一个可选项。
Kubernetes 对一个计算集群中的节点进行调度,对这些节点之上的负载进行管理,并对包含有同一应用的容器进行分组以易于管理和发现。使用 Kubernetes,你可以很容易去创建和管理一个 Vitess 集群,可谓开箱即用。

本机硬件上的 Vitess

与其他存储选择的对比

接下来将 Vitess 去对比两种通用解决方案,一个 vanilla MySQL 实现和一个 NoSQL。

Vitess vs. Vanilla MySQL

Vitess 在以下几个方面改进了 vanilla MySql 实现:
Vanilla MySQL Vitess
每个 MySql 连接都有一个内存开销,其范围介于 256KB 到几乎 3MB 之间,这取决于你所使用的 MySql 版本。随着你的用户群的增长,你需要增加内存以支撑增加的那些连接,但增加内存无助于提高查询速度。此外,在获取这些连接的时候还有大量的 CPU 开销。 Vitess 基于 BSON 的协议创建非常轻量级仅约 32KB 的连接。Vitess 的连接池功能使用了 Go 语言的卓越的并发支持将这些轻量级的连接映射到一个小型的 MySql 连接池。因此,Vitess 可以很容易地同时处理数千个连接。
低效的写查询,比如一些没有设置一个限制的写查询,将会对所有用户的数据库性能产生负面影响。 Vitess 所用的 SQL 解析器使用了一组可配置的规则对可能会降低数据库性能的查询进行重写。
分片是一个对你的数据进行分区来提高可扩展性和性能的过程。MySql 不支持分片,要求你自己去编写分片代码并在你自己的应用程序中嵌入分片逻辑。 Vitess 使用基于范围的分片。它同时支持水平和垂直的重新切分,完成大多数数据的转换只需要仅仅几秒钟的只读的停机时间。Vitess 甚至可以适应你现有的一个自定义分片方案。
MySql 集群为保证可用性采用的是主从复制,有一个主数据库和几个副本数据库。主库宕机,某台从库将成为新的主库。这个
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值