GSoC2014/学生/秦承翀
GSoC2014:为OpenStack Marconi添加Redis作为存储后端
学生:秦承翀
目录
摘要
Marconi是OpenStack的消息和通知服务。使用Marconi,租户可以在OpenStack上构建更复杂的应用程序。Marconi为租户提供不同的存储后端选项,帮助他们平衡延迟和持久性。本项目将为Marconi添加一个Redis存储后端。有了这个新的存储后端,租户可以在使用Marconi构建应用程序时,受益于Redis存储后端提供的卓越延迟性能。
项目描述
可能的导师
项目详情
背景
Marconi是OpenStack的消息和通知服务。它提供了一个OpenStack消息API和服务,可以实现各种分布式应用程序消息模式。通过Marconi,租户可以在OpenStack上构建更复杂的Web应用程序。
然而,众所周知,租户及其应用程序的需求高度多样化。他们可能需要Marconi提供不同的延迟和持久性性能。例如,在繁忙的在线零售系统(黑色星期五的amazon.com)中,持久性性能更为重要。用户的订单花费更多时间被订单处理系统处理是可以容忍的,但订单绝不能丢失。另一方面,对于执行需要实时中间结果的分布式科学计算系统,延迟性能至关重要。如果实时中间结果无法在一定时间限制内传递到下一阶段的工作者,任务将失败。
Marconi的不同延迟和持久性性能与不同的存储后端密切相关。因此,虽然Marconi的Icehouse版本将提供两个存储后端(SQLAlchemy和MongoDB),但仍然需要添加新的存储后端,例如Redis、RethinkDB等。其中,Redis是一个开源的内存数据存储,具有可选的持久性。当不需要数据的持久性时,Redis的内存特性使其能够以卓越的延迟性能运行。
项目目标
本项目的目标是将Redis作为存储后端添加到Marconi。
具体来说,它包含以下3个子目标
- 提供通过所有核心测试的Redis存储后端实现。这是项目核心部分,处理新存储后端的开发。
- 提供额外的测试,以测试Redis存储后端的细微之处。虽然核心测试套件相当彻底,但可能需要很少的额外测试来关联新的后端(如果有的话)。
- 提供比较Redis后端与MongoDB后端的基准测试。第三个目标基于前两个。在实现并测试了新的后端之后,我们可以对不同的后端进行基准测试并进行比较。可能会出现有趣的结果!
有关更多信息,请查看项目想法页面:添加新的存储后端。
实现目标步骤
- 学习。阅读文档/wiki,浏览代码,并获得背景知识。
- 为Marconi实现Redis驱动。实现Redis DataDriver和ControlDriver。
- 编写额外的测试、执行测试和调试。我们必须确保驱动程序能够正常工作。提供额外的测试,以测试Redis后端的细微之处。然后进行测试和调试。
- 基准测试和比较。开发一个基准测试框架。分别为MongoDB后端和Redis后端运行基准测试。然后比较它们。
对OpenStack的益处
本项目将为OpenStack的队列服务Marconi提供一个Redis存储后端。有了这个新的存储后端,租户可以在使用Marconi构建应用程序时,受益于Redis存储后端提供的卓越队列服务延迟性能。
交付成果
- Redis存储后端模块 (marconi.queues.storage.redis)
- Redis后端细微之处的额外测试用例
- 相关文档(设置、使用等)
里程碑与时间表
里程碑
- 里程碑#1:为Marconi实现Redis驱动
- 里程碑#2:添加额外的测试并执行测试
- 里程碑#3:执行基准测试和比较
时间表
- 4月22日 - 5月18日
- 社区绑定期
- 与导师进一步联系
- 阅读文档,浏览代码,获得背景知识
- 5月19日 - 6月1日
- 实现DataDriver
- 包括队列、消息和声明控制器
- 6月2日 - 6月15日
- 实现ControlDriver
- 包括分片和目录控制器
- 里程碑#1达成
- 6月16日 - 6月29日
- 开始执行核心测试
- 添加额外的测试,以测试Redis后端的细微之处
- 中期评估(6月23日)在此期间
- 6月30日 - 7月13日
- 执行测试(核心测试和额外的测试)
- 确保新的驱动程序通过所有测试
- 里程碑#2达成
- 7月14日 - 7月27日
- 为Marconi的存储后端开发一个简单的基准测试框架
- 7月28日 - 8月10日
- 基准测试不同的后端并比较它们
- 里程碑#3达成
- 8月11日 - 8月17日
- 代码清理,添加文档
- 准备最终评估
- 8月18日
- 我们达到最终评估