后端服务框架
介绍云平台后端服务所用的框架和相关库的使用方法,建议先阅读 开发手册/服务组件介绍 了解各个服务大概的功能。
后端服务框架
keystone, region, glance 等后端服务,都 是用的同一套后端服务框架,这个框架是我们自己定义实现的,核心模块如下:

-
REST API: 负责解析客户端发送的 CRUD http 请求,将不同的请求对应到 Model Dispatcher 模块。
-
Model Dispatcher: 将客户端的请求分发到对应资源的业务操作。
-
Model: 定义云平台各种资源,会进行数据库读写相关操作,如果具体业务需要进行耗时操作,会通过 Task 机制来执行耗时任务。
-
Task: 后台处理异步耗时任务的模块,会通过更新 Model 的状态来更新任务的执行结果。
Cloudpods 代码结构
- build: 打包rpm脚本
- cmd: 可执行binary入口程序
- pkg: 库
- appsrv: 通用http服务框架
- cloudcommon: 云平台服务框架,基于appsrv扩展
- cloudcommon/options: 通用options
- cloudcommon/app: 通用服务初始化代码
- cloudcommon/db: Model dispatcher和Models的基础实现
- cloudcommon/db/lockman: 锁实现
- cloudcommon/db/taskman: 异步任务框架
认证部分

- 客户端向服务发起请求前,需要从keystone获得token
- 客户端通过携带用户名密码调用keystone的/v3/auth/tokens接口获得token
- 客户端向服务发起的每次API请求都会在HTTP头携带该token,比如: X-Auth-Token: {token}
- 后端服务向keystone验证该token,获得用户的身份信息,执行后续API的流程
- 每个服务都有一个keystone注册的服务用户账号(user/password),并且以admin角色加入system项目
- 服务启动后,会向keystone发起认证,获得admin token