天天看点

ProxySQL源码分析1-ProxySQL功能介绍

ProxySQL介绍

ProxySQL源码分析1-ProxySQL功能介绍

上图中展示了流量从客户端发出 → ProxySQL进行处理转发 → 后端处理 → ProxySQL的前端连接 → 返回客户端的基本流程。下面我们简单梳理下ProxySQL的核心功能如下图。

ProxySQL源码分析1-ProxySQL功能介绍
  • 读写分离:可查询走从库,写入走主库
  • 简单Sharding:ProxySQL的sharding是通过正则匹配来实现的,对于需要拆分SQL以及合并SQL执行结果的不能支持,所以写了简单sharding
  • 连接池管理:常规功能,为了提高SQL执行效率。
  • 多路复用:主要优化点在后端mysql连接的复用,对比smart client,中间层不仅对前端建连也会对后端建连,可自行控制后端连接的复用逻辑。
  • 流量管控:kill连接和kill query;whitelist配置。
  • 高可用:底层mysql,如果从库挂了,自动摘除流量;主库挂了暂不处理。proxysql自身高可用,提供cluster的功能,cluster内部会自行同步元数据以及配置变更信息。
  • 查询缓存:对username+schema+query的key进行缓存,设置ttl过期,不适合写完就查的场景,因为在数据在未过期之前可能是脏数据。
  • 动态配置:大部分的配置可动态变更,先load到runtime,在save到disk,通过cluster的功能同步到其他的节点。
  • 流量镜像:同一份流量可以多出写入,但是并不保证mirror的流量一定成功。
  • SQL改写:在query rules中配置replace规则,可以对指定的SQL进行改写。

如有错误,欢迎指正