当前位置: 首页 > news >正文

mysql读写分离中间件——Atlas详解

要理解 360 开源的 Atlas 中间件(基于 MySQL Proxy 二次开发),最直观的方式是通过 “架构图解 + 核心作用拆解”,清晰展现它在客户端与 MySQL 数据库之间的 “桥梁角色”。

以下从 架构图解核心作用解析 两部分展开:

一、Atlas 核心架构图解(客户端 → Atlas → 后端 MySQL)

Atlas 的核心定位是 “MySQL 中间件”,部署在 “客户端” 与 “后端 MySQL 集群(主从 / 多主)” 之间,所有数据库请求需经过 Atlas 转发。其简化架构如下:
在这里插入图片描述

图解关键说明:

  • 流量必经之路:客户端不直接连接 MySQL,而是连接 Atlas 的 “代理端口”(如你配置中的 33060);
  • 核心逻辑在 Atlas:Atlas 拦截所有 SQL 请求,完成 “解析→判断→转发”,后端 MySQL 对客户端完全透明;
  • 管理接口独立:通过 admin-address(如 2345 端口)可动态调整配置(无需重启 Atlas),如新增从库、修改日志级别。

二、Atlas 核心作用解析(基于架构的功能落地)

结合上述架构,Atlas 的核心价值是 “简化 MySQL 集群运维,提升业务访问效率与稳定性”,具体拆解为 6 大核心作用:

  1. 读写分离(核心作用)
    这是 Atlas 最常用的功能,解决 “MySQL 主从集群中读请求压力过大” 的问题:
    • 原理:Atlas 解析客户端发送的 SQL,自动判断 “读 / 写类型”:
    • 写操作(INSERT/UPDATE/DELETE/CREATE 等):强制转发到 主库(确保数据一致性);
    • 读操作(SELECT):均匀分发到 多个从库(通过轮询 / 权重等策略,分摊读压力);
    • 价值:业务无需修改代码(客户端只需连 Atlas),即可利用主从集群的 “读扩展能力”,提升查询速度。
  2. 负载均衡(针对读请求)
    在 “多从库” 场景下,Atlas 对读请求实现智能负载均衡:
    • 支持策略:默认轮询(每个从库依次接收请求),也可配置 “权重”(性能好的从库分配更多请求,如给 Slave 1 权重 2、Slave 2 权重 1,则 Slave 1 接收 2/3 的读请求);
    • 故障剔除:若某个从库宕机,Atlas 会自动检测并暂时排除该从库(不再转发请求),待从库恢复后重新加入集群,避免客户端收到 “连接失败” 错误。
  3. 连接池与连接管理
    Atlas 内置连接池,优化 “客户端与 MySQL 之间的连接效率”:
    • 问题背景:客户端若直接连 MySQL,高频次创建 / 销毁连接会消耗大量资源(“连接风暴” 可能压垮 MySQL);
    • Atlas 解决方案:Atlas 与后端 MySQL 建立 “长连接池”,客户端与 Atlas 建立连接后,Atlas 复用池中的长连接与 MySQL 交互,减少连接创建 / 销毁的开销;
    • 额外能力:支持 “用户认证”(客户端连 Atlas 时验证账号密码,无需直接暴露 MySQL 账号),提升安全性。
  4. 动态配置(无需重启服务)
    传统 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;
    • 价值:避免因配置调整导致服务中断,适合生产环境的 “无感知运维”。
  5. 日志监控与审计
    Atlas 提供详细的日志记录,方便问题排查与运维审计:
    • 支持日志类型:
    • SQL 日志(sql-log=ON):记录所有经过 Atlas 的 SQL 语句(含客户端 IP、执行时间、转发目标库),便于审计 “慢查询” 或 “异常 SQL”;
    • 运行日志:记录 Atlas 自身的运行状态(如连接建立 / 断开、从库故障、配置变更),便于排查中间件故障;
    • 日志存储:日志统一写入 log-path 配置的目录,支持按日期切割(需配合日志轮转工具),避免日志文件过大。
  6. 故障切换(可选,需配置)
    在 “双主 / 主从切换” 场景下,Atlas 支持自动 / 手动故障切换:
    • 自动切换:若主库宕机,Atlas 可检测到主库故障,并自动将 “备用主库”(需提前配置)切换为新主库,同时更新从库的同步源,确保业务写操作不中断;
    • 手动切换:通过管理接口执行命令(如 switch master to 10.0.0.56:3306),手动将备用主库升级为主库,适合计划性主库维护。
  7. 其他辅助功能
    • SQL 过滤:可配置 “禁止执行的 SQL”(如 DROP DATABASE),防止误操作或恶意 SQL 破坏数据;
    • 字符集统一:通过 charset=utf8 配置,确保客户端→Atlas→MySQL 之间的字符编码一致,避免乱码;
    • 读写分离例外:支持配置 “指定 SQL 强制走主库”(如某些 SELECT 需要实时数据,如查询 “刚插入的订单”,可通过 Atlas 规则强制转发到主库)。

三、Atlas 适用场景总结

通过上述作用可知,Atlas 适合以下业务场景:

  • 业务已使用 MySQL 主从集群,需要 “无代码改造实现读写分离”;
  • 读请求压力大(如电商商品列表、报表查询),需通过多从库分摊压力;
  • 希望简化 MySQL 集群运维(如动态调整从库、避免重启服务);
  • 对数据库连接效率、安全性有要求(需连接池、账号隔离)。

简言之,Atlas 是 MySQL 主从集群的 “最佳搭档”,让业务无需关注底层数据库架构,即可享受集群的稳定性与扩展性。

http://www.dtcms.com/a/473760.html

相关文章:

  • jndi使用druid,在tomcat中配置druid监控
  • tomcat 默认编码的设置
  • 【mybatisPlus详解】
  • 回归与分类算法全解析:从理论到实践
  • 什么是 Qt 的元对象系统?
  • 【LeetCode】68. 文本左右对齐
  • 第十九周周报
  • Springboot 常见面试题汇总
  • 驻马店市做网站百度收录软件
  • 在实际项目中,Java 应用的性能瓶颈通常出现在哪些方面,又该如何有效地进行优化?
  • 08_Freqtrade配置与开发环境
  • C++实例
  • 复习总结最终版:Linux驱动
  • Python全栈(基础篇)——Day09:后端内容(列表生成式+生成器+迭代器+实战演示+每日一题)
  • kanass入门到实战(18) - 如何通过仪表盘,快速直观掌握项目进度及度量
  • seo网站优化工具大全wordpress 百度地图api
  • webstorm 调试时不能连接网页
  • 互助网站建设公司网页制作 主流软件
  • 微信公众号登录wordpress网站安徽城乡建设厅网站证件
  • 用wordpress建公司网站步骤郑州橱柜网站建设
  • StringBuffer和StringBuilder的扩容机制
  • 计数 dp
  • 数据结构 实现二叉搜索树与哈希表
  • 深度解析:使用ZIP流式读取大型PPTX文件的最佳实践
  • 商家运营优化:基于京东API返回值的商品管理策略
  • SpringAI+DeepSeek大模型应用开发自用笔记
  • 220kV变电站电气一次系统设计(论文+CAD图纸)
  • 网站快照诊断qq空间 wordpress
  • sql优化思路
  • LeetCode 分类刷题:92. 反转链表 II