组件分享之后端组件——基于Golang的数据库集群系统vitess
背景
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
组件基本信息
- 组件:vitess
- 开源协议:Apache-2.0 license
内容
本节我们分享一个基于Golang的数据库集群系统vitess,用于通过通用分片对 MySQL 进行水平扩展。
通过封装分片路由逻辑,Vitess 允许应用程序代码和数据库查询对数据在多个分片上的分布保持不可知性。使用 Vitess,您甚至可以随着需求的增长拆分和合并分片,原子切换步骤仅需几秒钟。
自 2011 年以来,Vitess 一直是 YouTube 数据库基础架构的核心组件,并且已经发展到包含数以万计的 MySQL 节点。
有关 Vitess 的更多信息,请访问vitess.io。
Vitess 拥有一个不断壮大的社区。您可以在 此处查看采用者列表。
特点:
扩展性
Vitess集Mysql数据库的很多重要特性和NoSQL数据库的可扩展性于一体。其内建拆分分片功能使您能够对您的MySQL数据库集群无限水平扩展,同时无需为应用添加分片逻辑。
性能
Vitess自动重写对数据库性能有损害的查询。它还使用缓存机制来调解查询,并防止重复查询同时到达您的数据库。通過每夜的基準來監控性能表現。
管理
Vitess可以支持自动处理主故障转移和备份等功能。它使用分布式元数据服务来跟踪和管理服务器,使您的应用程序无需关心数据库拓扑变化。
连接池
Vitess避免了MySQL连接的高内存开销。 Vitess服务器轻松地一次处理数千个连接。
分片管理
MySQL本身并不提供拆分分片功能,但是您的业务数据量增大到一定程度是您是需要增加集群的。Vitess提供在线拆分功能,只需要很少的时间就完成新集群的切换,无需您在应用程序中添加任何拆分逻辑。
工作流
Vitess会跟踪有关集群配置的所有元数据,以便集群拓扑始终是最新的,对不同的客户端保持一致。
Vitess支持MySQL 5.6+和MariaDB 10.0+。我们建议使用MySQL 5.7。
具体安装和使用方式可以持续关注我的文档,更多内容可以参考其官方网站文档
本文声明:
88x31.png知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
网友评论