要理解 360 开源的 Atlas 中间件(基于 MySQL Proxy 二次开发),最直观的方式是通过 "架构图解 + 核心作用拆解",清晰展现它在客户端与 MySQL 数据库之间的 "桥梁角色"。
另外关于Atlas的安装部署参考 *MySQL读写分离中间件Atlas安装*
以下从 架构图解 和 核心作用解析 两部分展开:
一、Atlas 核心架构图解(客户端 → Atlas → 后端 MySQL)
Atlas 的核心定位是 "MySQL 中间件",部署在 "客户端" 与 "后端 MySQL 集群(主从 / 多主)" 之间,所有数据库请求需经过 Atlas 转发。其简化架构如下:
图解关键说明:
- 流量必经之路:客户端不直接连接 MySQL,而是连接 Atlas 的 "代理端口"(如你配置中的 33060);
- 核心逻辑在 Atlas:Atlas 拦截所有 SQL 请求,完成 "解析→判断→转发",后端 MySQL 对客户端完全透明;
- 管理接口独立:通过 admin-address(如 2345 端口)可动态调整配置(无需重启 Atlas),如新增从库、修改日志级别。
二、Atlas 核心作用解析(基于架构的功能落地)
结合上述架构,Atlas 的核心价值是 "简化 MySQL 集群运维,提升业务访问效率与稳定性",具体拆解为 6 大核心作用:
- 读写分离(核心作用)
这是 Atlas 最常用的功能,解决 "MySQL 主从集群中读请求压力过大" 的问题:
• 原理:Atlas 解析客户端发送的 SQL,自动判断 "读 / 写类型":
• 写操作(INSERT/UPDATE/DELETE/CREATE 等):强制转发到 主库(确保数据一致性);
• 读操作(SELECT):均匀分发到 多个从库(通过轮询 / 权重等策略,分摊读压力);
• 价值:业务无需修改代码(客户端只需连 Atlas),即可利用主从集群的 "读扩展能力",提升查询速度。 - 负载均衡(针对读请求)
在 "多从库" 场景下,Atlas 对读请求实现智能负载均衡:
• 支持策略:默认轮询(每个从库依次接收请求),也可配置 "权重"(性能好的从库分配更多请求,如给 Slave 1 权重 2、Slave 2 权重 1,则 Slave 1 接收 2/3 的读请求);
• 故障剔除:若某个从库宕机,Atlas 会自动检测并暂时排除该从库(不再转发请求),待从库恢复后重新加入集群,避免客户端收到 "连接失败" 错误。 - 连接池与连接管理
Atlas 内置连接池,优化 "客户端与 MySQL 之间的连接效率":
• 问题背景:客户端若直接连 MySQL,高频次创建 / 销毁连接会消耗大量资源("连接风暴" 可能压垮 MySQL);
• Atlas 解决方案:Atlas 与后端 MySQL 建立 "长连接池",客户端与 Atlas 建立连接后,Atlas 复用池中的长连接与 MySQL 交互,减少连接创建 / 销毁的开销;
• 额外能力:支持 "用户认证"(客户端连 Atlas 时验证账号密码,无需直接暴露 MySQL 账号),提升安全性。 - 动态配置(无需重启服务)
传统 MySQL 主从切换或新增从库时,需重启中间件 / 修改业务配置,而 Atlas 支持 "动态调整配置":
• 操作方式:通过 admin-address(如 2345 端口)连接 Atlas 管理界面(用 mysql 客户端即可),执行命令修改配置:
○ 新增从库:add slave 10.0.0.53:3306;
○ 下线从库:remove slave 10.0.0.52:3306;
○ 修改日志级别:set log-level=error;
• 价值:避免因配置调整导致服务中断,适合生产环境的 "无感知运维"。 - 日志监控与审计
Atlas 提供详细的日志记录,方便问题排查与运维审计:
• 支持日志类型:
• SQL 日志(sql-log=ON):记录所有经过 Atlas 的 SQL 语句(含客户端 IP、执行时间、转发目标库),便于审计 "慢查询" 或 "异常 SQL";
• 运行日志:记录 Atlas 自身的运行状态(如连接建立 / 断开、从库故障、配置变更),便于排查中间件故障;
• 日志存储:日志统一写入 log-path 配置的目录,支持按日期切割(需配合日志轮转工具),避免日志文件过大。 - 故障切换(可选,需配置)
在 "双主 / 主从切换" 场景下,Atlas 支持自动 / 手动故障切换:
• 自动切换:若主库宕机,Atlas 可检测到主库故障,并自动将 "备用主库"(需提前配置)切换为新主库,同时更新从库的同步源,确保业务写操作不中断;
• 手动切换:通过管理接口执行命令(如 switch master to 10.0.0.56:3306),手动将备用主库升级为主库,适合计划性主库维护。 - 其他辅助功能
• SQL 过滤:可配置 "禁止执行的 SQL"(如 DROP DATABASE),防止误操作或恶意 SQL 破坏数据;
• 字符集统一:通过 charset=utf8 配置,确保客户端→Atlas→MySQL 之间的字符编码一致,避免乱码;
• 读写分离例外:支持配置 "指定 SQL 强制走主库"(如某些 SELECT 需要实时数据,如查询 "刚插入的订单",可通过 Atlas 规则强制转发到主库)。
三、Atlas 适用场景总结
通过上述作用可知,Atlas 适合以下业务场景:
- 业务已使用 MySQL 主从集群,需要 "无代码改造实现读写分离";
- 读请求压力大(如电商商品列表、报表查询),需通过多从库分摊压力;
- 希望简化 MySQL 集群运维(如动态调整从库、避免重启服务);
- 对数据库连接效率、安全性有要求(需连接池、账号隔离)。
简言之,Atlas 是 MySQL 主从集群的 "最佳搭档",让业务无需关注底层数据库架构,即可享受集群的稳定性与扩展性。
另外关于Atlas的安装部署参考 MySQL读写分离中间件Atlas安装