cetus/doc/cetus-architecture.md

51 lines
2.0 KiB
Markdown
Raw Normal View History

2018-03-06 15:34:44 +08:00
# Cetus 架构和实现
## 1.整体架构
2018-03-06 17:48:07 +08:00
Cetus 网络架构图如下所示:
2018-03-06 15:34:44 +08:00
2018-03-06 20:38:53 +08:00
![Cetus 架构图](https://github.com/Lede-Inc/cetus/blob/master/doc/picture/Cetus_framwork.png)
2018-03-06 17:48:07 +08:00
Cetus位于应用程序与MySQL数据库之间作为前端应用与数据库的通讯。其中前端应用连接LVS节点LVS节点映射端口到多个Cetus服务后者通过自身的连接池连接到后端的数据库。
2018-03-06 15:34:44 +08:00
## 2.功能实现
### 1. 功能模块
2018-03-06 17:48:07 +08:00
Cetus 主要的功能模块包括以下五个部分:
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
1.读写分离
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
2.分库
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
3.SQL解析
2018-03-06 15:34:44 +08:00
4.连接池
2018-03-06 17:48:07 +08:00
5.管理功能
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
功能模块间的交互关系如下:
2018-03-06 15:34:44 +08:00
2018-03-06 17:38:20 +08:00
![Cetus 功能模块图](https://github.com/Lede-Inc/cetus/blob/master/doc/picture/Cetus_module.png)
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
其中SQL解析模块为后续读写分离和数据分片等功能解析出SQL类型、表名和查询条件等关键信息连接池模块是自维护连接池支持Cetus根据需求查询和检测后端维护连接数具有高效连接共享性、事务与Prepare的前后端绑定功能和热点连接重用与连接等待机制管理功能模块通过用户在管理界面输入独立认证并转到下一状态给用户回复状态查询结果或调整参数。
2018-03-06 15:34:44 +08:00
### 2. 工作流程
2018-03-06 17:48:07 +08:00
Cetus 整体工作流程图如下:
2018-03-06 15:34:44 +08:00
2018-03-06 17:38:20 +08:00
![Cetus 工作流程图](https://github.com/Lede-Inc/cetus/blob/master/doc/picture/Cetus_dataflow.png)
2018-03-06 17:48:07 +08:00
其整体工作流程如下所述:
2018-03-06 15:34:44 +08:00
2018-04-13 11:10:01 +08:00
1.Cetus读取启动配置文件和其他配置并启动监听客户端请求
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
2.收到客户端新建连接请求后Cetus经过用户鉴权和连接池判断连接数是否达到上限确定是否新建连接
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
3.连接建立和认证通过后Cetus接收客户端发送来的SQL语句并进行词法和语义分析对SQL语句进行解析分析SQL的请求类型必要时改写SQL然后选取相应的DB并转发
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
4.等待后端处理查询,接收处理查询结果集,进行合并和修改,然后转发给客户端;
2018-03-06 15:34:44 +08:00
2018-03-06 17:48:07 +08:00
5.如收到客户端关闭连接的请求Cetus判断是否需要关闭后端连接关闭连接。