小米开源数据库中间件Gaea实战
发布网友
发布时间:2024-10-06 04:49
我来回答
共1个回答
热心网友
时间:2024-10-16 14:45
本文基于dbaplus社群第191期线上分享整理。
Gaea,作为一款MySQL数据库中间件,兼容MyCAT核心特性,提供读写分离、分库分表等功能。选择使用Go语言实现,考虑到Go语言在编写网络应用方面的易用性、可靠性,以及公司内部以Go语言生态为主的技术体系。
Gaea实现MySQL协议,将自己伪装成一个MySQL服务器,应用程序通过MySQL客户端访问Gaea,向Gaea发起SQL请求,Gaea将请求转发至后端MySQL执行,再将响应结果返回给客户端。中间件有助于集中管理用户和数据库配置信息,减轻DBA的运维负担。
Gaea抽象出namespace、user、slice等概念,其中namespace对应业务,是资源划分的基本单位;user等同于MySQL用户,通过username和password连接至Gaea;slice对应MySQL实例资源,包含主库与从库,实现读写分离;namespace中可包含多个slice,通过制定路由规则实现分库分表。
Gaea配置信息管理由Proxy、CC(中控服务)与Web(管理控制台)三部分组成。Proxy负责MySQL流量接入,CC通过管理接口与Proxy交互进行配置管理和下发。Web提供可视化管理界面,用于DBA管理配置信息和开发工程师查看。配置数据存储在etcd中,Gaea CC与Proxy通过etcd进行交互。
Gaea主要功能包括快速使用、连接安装与配置、启动Proxy、发送请求、查看监控等。使用简单,源码编译需go 1.12,使用go module管理依赖。启动Proxy需配置文件,包括监听端口、日志路径等。发送请求时,使用用户名和密码连接Gaea,执行SQL操作。Gaea提供监控指标,包括SQL请求指标与机器层面指标,方便问题排查与监控。
Gaea整体架构包含协议解析、会话管理、SQL解析、路由调度与SQL执行等模块。支持MySQL文本协议与二进制prepare协议,SQL执行使用TiDB解析器,配置热加载实现在线修改配置,无需重启。
性能测试显示,在点查询场景下,Gaea Proxy性能比MyCAT高约20%左右。Gaea项目已开源,地址为github.com/XiaoMi/Gaea,欢迎试用、贡献代码与提供反馈。