Cetus 架构和实现

    Cetus位于应用程序与MySQL数据库之间,作为前端应用与数据库的通讯。其中,前端应用连接LVS节点,LVS节点映射端口到多个Cetus服务,后者通过自身的连接池连接到后端的数据库。

    2.功能实现

    Cetus 主要的功能模块包括以下五个部分:

    1.读写分离

    2.分库

    4.连接池

    5.管理功能

    功能模块间的交互关系如下:

    Cetus 功能模块图

    其中,SQL解析模块为后续读写分离和数据分片等功能解析出SQL类型、表名和查询条件等关键信息;连接池模块是自维护连接池,支持Cetus根据需求查询和检测后端,维护连接数,具有高效连接共享性、事务与Prepare的前后端绑定功能和热点连接重用与连接等待机制;管理功能模块通过用户在管理界面输入,独立认证并转到下一状态,给用户回复状态查询结果或调整参数。

    2. 工作流程

    其整体工作流程如下所述:

    1.Cetus读取启动配置文件和其他配置并启动,监听客户端请求;

    2.收到客户端新建连接请求后,Cetus经过用户鉴权和连接池判断连接数是否达到上限,确定是否新建连接;

    3.连接建立和认证通过后,Cetus接收客户端发送来的SQL语句,并进行词法和语义分析,对SQL语句进行解析,分析SQL的请求类型,必要时改写SQL,然后选取相应的DB并转发;

    5.如收到客户端关闭连接的请求,Cetus判断是否需要关闭后端连接,关闭连接。