支持 redis 作为 mgmt 存储后端¶
https://blueprints.launchpad.net/zaqar/+spec/support-redis-as-management-storage-backend
Redis 与其他数据库解决方案在许多方面都不同,它支持两种模式:内存存储和磁盘存储。我们可以通过修改 redis.conf 选择其中一种模式。如果我们在 redis.conf 中添加 save 选项,redis 可以周期性地将数据保存到磁盘:save 900 1 save 300 10 save 60 10000
Redis 包含一个相当高性能的数据库实现。目前,zaqar 支持 redis、mongodb 和 swift 作为存储后端。经过性能测试,我们发现 redis 在这些存储后端中的性能最高。使用 Redis,我们可以提供一个非常实用、易于管理和扩展,同时提供卓越性能的系统。
问题描述¶
为了增强 zaqar 的性能,有必要支持 redis 作为管理数据库后端。
目前,Zaqar 已经支持 sqlalchemy 和 mongodb 作为管理存储后端,这对于 redis 来说将是一个很好的参考。
提议的变更¶
在 redis 存储中添加 CatalogueController
添加诸如:insert、update、delete、list、get、drop_all 等函数。
在 redis 存储中添加 FlavorsController
添加诸如:insert、update、delete、list、get、drop_all 等函数。
在 redis 存储中添加 PoolsController
添加诸如:insert、update、delete、list、get、drop_all 等函数。
缺点¶
无
备选方案¶
MongoDB SQL
数据模型影响¶
我们需要添加三个表模型,如下所示
用于 catalogue 表的 Redis 数据结构
所有项目 (Redis 有序集合)
按名称排序的所有 queue_ids 集合。用于删除 catalogue 表的所有记录。
Key: catalogue
Id
值
name
<project_id>.<queue_name>
项目索引 (Redis 有序集合)
按名称排序的给定项目的队列 id 集合。
Key: <project_id>.catalogue
Id
值
name
<project_id>.<queue_name>
队列和池信息 (Redis 哈希)
Key: <project_id>.<queue_name>.catalogue
名称
字段
项目
p
队列
p_q
池
p_p
用于 flavor 表的 Redis 数据结构
所有 flavor_ids (Redis 有序集合)
按名称排序的所有 flavor_ids 集合。用于删除 flavor 表的所有记录。
Key: flavors
Id
值
name
<flavor>
项目索引 (Redis 有序集合)
按名称排序的给定项目的 flavor 集合。
Key: <project_id>.flavors
Id
值
name
<flavor>
Flavor 信息 (Redis 哈希)
Key: <flavor_id>.flavors
名称
字段
flavor
f
project
p
capabilities
c
用于 pools 表的 Redis 数据结构
所有池 (Redis 有序集合)
按名称排序的所有 pool_ids 集合。用于删除 pools 表的所有记录。
Key: pools
Id
值
name
<pool>
Flavor 索引 (Redis 有序集合)
按名称排序的给定 flavor 的 pool_ids 集合。
Key: <flavor>.pools
Id
值
name
<pool>
Pools 信息 (Redis 哈希)
Key: <pool>.pools
名称
字段
pool
p
uri
u
weight
w
options
o
实现¶
负责人¶
- 主要负责人
gengchc2 <geng.changcai2@zte.com.cn>
- 二级分配人
gecong <ge.cong@zte.com.cn>
里程碑¶
- 完成目标里程碑
Queens-Q2
工作项¶
在 redis 存储中添加 CatalogueController。
在 redis 存储中添加 FlavorsController。
在 redis 存储中添加 PoolsController。
依赖项¶
测试¶
需要创建单元测试和 Tempest 测试来覆盖代码更改。
文档影响¶
添加关于 redis 配置和 HA 的文档。
参考资料¶
无