Gaea中配置如何更新

Gaea通过etcd存储各业务Namespace的JSON动态配置,涵盖MySQL实例信息、读写分离策略、分库分表路由规则及账号权限等。配置更新采用gaea-cc主导的两阶段热加载:Prepare阶段预加载新配置并验证,Commit阶段原子切换路由指针,确保全集群Proxy配置一致且业务无感。Proxy同时watch etcd实现兜底同步,支持平滑扩缩容与故障恢复。

一、etcd里存的是什么(核心:Namespace JSON配置)

Gaea 分两类配置:

  1. Proxy本地启动配置(ini):etcd地址、日志、监听端口,不放在etcd,很少改
  2. 动态租户配置(存在etcd,JSON):每个业务租户对应一个 namespace ,这是etcd里主体内容

etcd key 前缀一般类似:
/gaea/{cluster_name}/namespace/{ns_name}

JSON里面包含这些信息:

  1. 账号权限:该namespace下MySQL账号、密码、白名单、连接限流
  2. Slice 后端实例信息:
  • 一组MySQL(主库、从库列表、地址端口)
  • 读写分离策略:读走从库、主从权重、延迟阈值
  1. 分片路由规则(重点)
  • 路由模式: kingshard / mycat 两种
  • 分库分表字段、分片数量、分片算法(hash/range)
  • 表分布:哪张表落在哪个slice
  1. SQL黑白名单、超时、事务限制、连接池参数
  2. 状态标记:版本号、prepare/commit标记(用于两阶段热更)

补充:etcd还存少量agent心跳、实例健康状态,主体是namespace配置。

二、配置是怎么更新的(两阶段热加载,面试高频)

Gaea不是简单watch到key变更就直接切,是CC控制的2PC式热更新,保证集群所有proxy配置一致性,避免一部分proxy新配置、一部分旧配置(脑路由)

完整流程

  1. DBA 在 gaea-web 页面修改配置(改分片、加从库、改路由)
  2. web 调用 gaea-cc ,cc 先写入新版本namespace配置到etcd(新version)
  3. Prepare阶段(预加载)
    cc 向集群所有gaea-proxy发prepare指令;
    proxy 收到后,从etcd拉取新版本配置,新建一套独立路由、连接池资源,不替换正在跑的旧配置;
    全部proxy prepare成功,才往下走;任意一个失败,直接回滚,业务无影响。
  4. Commit阶段(切换生效)
    cc 下发commit信号;
    proxy 原子切换路由指针:新请求走新namespace配置;老会话、老连接继续跑完旧版本,平滑过渡,不踢连接。
  5. 旧资源慢慢GC释放,更新完成。

两种监听机制区分开

  • ✅ 控制面:cc主动推送prepare/commit(主流程,保证一致性)
  • ✅ proxy同时持续watch etcd key:兜底。proxy重启、新proxy上线时,通过watch主动拉取当前最新namespace配置。

❗ 关键点:不是etcd watch事件直接触发切换,watch只负责感知版本、拉数据;真正切换时机由cc统一调度,两阶段提交,保证全集群proxy配置一致。

三、Mermaid时序图

gaea-proxy-2 gaea-proxy-1 Etcd gaea-cc gaea-web DBA gaea-proxy-2 gaea-proxy-1 Etcd gaea-cc gaea-web DBA 新请求走新配置;已有会话继续旧配置 修改namespace配置 提交变更 写入新版本namespace JSON prepare(加载新版配置) prepare(加载新版配置) prepare ok prepare ok commit(原子切换路由) commit(原子切换路由) watch监听,兜底同步 watch监听,兜底同步

四、一句话总结

etcd 存储每个业务namespace的JSON配置:后端MySQL实例、读写分离、分库分表路由、账号限流;
更新由gaea-cc做两阶段热更,先全部proxy预加载、全部成功再统一commit切换;proxy同时watch etcd,用于新节点启动和故障后自动同步配置,全程不需要重启proxy。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值