1.小米开源数据库中间件Gaea实战
小米开源数据库中间件Gaea实战
本文基于dbaplus社群第期线上分享整理。标源
Gaea,源码作为一款MySQL数据库中间件,分析兼容MyCAT核心特性,标源提供读写分离、源码分库分表等功能。分析cookie源码 看雪选择使用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(管理控制台)三部分组成。mysql 源码 cProxy负责MySQL流量接入,CC通过管理接口与Proxy交互进行配置管理和下发。Web提供可视化管理界面,用于DBA管理配置信息和开发工程师查看。配置数据存储在etcd中,Gaea CC与Proxy通过etcd进行交互。
Gaea主要功能包括快速使用、yocto uboot源码连接安装与配置、启动Proxy、发送请求、查看监控等。使用简单,源码编译需go 1.,使用go module管理依赖。启动Proxy需配置文件,包括监听端口、日志路径等。发送请求时,使用用户名和密码连接Gaea,执行SQL操作。Gaea提供监控指标,包括SQL请求指标与机器层面指标,方便问题排查与监控。
Gaea整体架构包含协议解析、会话管理、SQL解析、路由调度与SQL执行等模块。支持MySQL文本协议与二进制prepare协议,SQL执行使用TiDB解析器,配置热加载实现在线修改配置,无需重启。
性能测试显示,在点查询场景下,Gaea Proxy性能比MyCAT高约%左右。Gaea项目已开源,地址为github.com/XiaoMi/Gaea,欢迎试用、贡献代码与提供反馈。