xSkyProxy使用场景

xSkyProxy 是一个处于你的client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。程序完全C++开发,单线程事件驱动; 主要功能包括:负载平衡,故障、查询分析,查询过滤和修改等等。

简单的说,xSkyProxy 就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且按照用户自定义配置的分库分表规则, 可以实现复杂的SQL路由,达到数据分库分表存储的目的; 同时也能根据用户MYSQL主从库配置信息,对读写SQL自动识别与路由, 从而实现读写分离和负载平衡。

对于应用来说,xSkyProxy 是完全透明的,应用则只需要连接到 xSkyProxy 的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。

1. xSkyProxy 做为MYSQL透明代理

xSkyProxy 在只配置后台DB连接池,不配置分库分表SQL改写规则的情景下,不会对SQL语句进行改写,直接将收到的SQL语句直接投送到对应的DB,起到MYSQL透明代理的作用。 并且在收到SQL执行的结果集后,也不作任何操作,直接回复到CLIENT端。对于应用来说,xSkyProxy 是完全透明的,应用则只需要连接到 xSkyProxy 的监听端口即可。

2. xSkyProxy 做为MYSQL数据分布网关(分库分表)

在配置了后端DB节点连接池,并且也配置了对此逻辑数据库的拆分规则,此时, xSkyProxy 在收对此逻辑数据库的操作后,会对SQL语句进行分析

按照用户自定义配置的分库分表规则,计算出对应的库索引和数据表索引值,对SQL进行改写,再将改写后的SQL投送到实际的DB上。 通过实现复杂的SQL路由,可以达到数据分库分表存储的目的; 同时也能根据用户MYSQL主从库配置信息,对读写SQL自动识别与路由, 从而实现读写分离和负载平衡。

对于应用来说,经过 xSkyProxy 的处理,实际数据存储的复杂分库分表规则是完全透明的,应用层无需了解数据的实际存储规则,即可直接操作数据库, 应用则只需要连接到 xSkyProxy 的监听端口即可。当然,这样 xSkyProxy 机器可能成为单点失效,但完全可以使用多个 xSkyProxy 机器做为冗余,在应用服务器的连接池配置中配置到多个 xSkyProxy 的连接参数即可。