数据层
数据库
MySQL:对于需要长期固化的底层数据使用MySQL进行存储
缓存
Redis:对于刷新频率、实时性较高的数据,使用Redis进行存储,达到快速读写的目的
文件存储
此外用户上传的文件;构建镜像配置的dockerfile;部署和创建服务时生成的yaml文件,直接使用文件的形式存储在服务器的对应目录下
服务层
服务器框架
Tornado:业务逻辑的处理使用Tornado框架进行搭建,非阻塞式的优点充分利用了服务器性能。将代码分离为Service和Handler层,清晰地界定了数据处理和业务逻辑处理两大块内容
Service
用来处理和数据层的交互,通过将底层的IO操作封装为各类Service接口,使得业务开发的过程更加专注独立。
Handler
业务逻辑的处理区域。同时Tornado框架提供的路由注册机制直接将内部函数和外部API地址对应起来,极大的降低了网络请求的开发复杂度。
组件
内部封装了大量的模块化组件,用以提高开发效率
Log
日志模块业务处理过程中方便快速、简单地记录各类日志,日志分为Debug、Info、Warn、Error、Stats五类,归档于不同的目录之下。
SSH
因为业务中有大量的需要实时访问服务器进行命令行配置的情况,远程访问模块让开发者只需要提供服务器登录数据和所需执行的命令就可以达到目的。同时还提供了异步、同步两种执行方式以便开发者灵活使用。
Decorator
装饰器,在不改变原函数的情况下给函数增加功能。框架内部封装了大量装饰器用以提高开发效率,例如用以判断用户登录情况的装饰器、用以通过权限控制用户操作的装饰器等等
Data API
对底层数据的操作通过这类组件进行封装,包含访问MySQL和Redis、连接池等动作
业务服务
业务功能主要分为下面4块
项目/应用
集群/服务器
镜像
用户/权限
服务器管理Agent
通过go语言开发并编译成可执行文件,运行于需要加入系统管理的服务器上,主要有如下两块功能
服务器注册
用户在系统中加入自己的服务器时,Agent会自动上报注册信息,若鉴权条件满足则允许注册
数据采集
服务器上的各类业务资源,通过Agent上报给后端服务器进行计算、存储及分析,是系统核心数据的来源
基础支撑层
任务调度
Supervisor:根据配置监控进程状态,自动重启异常退出进行的一套进程管理系统。这样的话,业务服务部署好之后管理员可以不用再提心吊胆进程挂了、业务阻塞之类的问题。
接口文档
APIDOC:一款可以有源代码中的注释直接自动生成api接口文档的工具,生成的接口文档可以直接通过web访问,可读性也很高,大大简化开发人员彼此间的交流成本。
网络层
负载均衡
NGINX:高性能的HTTP和反向代理服务,作为web服务器可以用较少的资源提供更高的并发连接。