这篇博文源自 Eric Day 在 http://oddments.org/?p=591 的文章。我复制在此处供您参考
OpenStack 目前由三个主要组件组成:Nova(计算)、Swift(对象存储)和 Glance(镜像服务)。还有一些其他项目,例如仪表板和移动应用程序。您可以在 此处查看完整列表。这是一个良好的开端,但为了使 OpenStack 长期竞争,需要引入其他基础设施和平台服务。我想谈谈我正在进行的一个新的消息队列服务的过程。
步骤 1 – 想法
第一步是弄清楚缺少什么。什么新的服务可以补充现有的软件?什么尚未解决?用户在要求什么?消息队列似乎是下一步的合适选择,因为大多数需要扩展和高可用性的应用程序最终都会使用队列(有时并非以最明显的形式)。它还将允许构建其他云服务在其之上。事实上,当前的 OpenStack 项目甚至可以利用队列服务来实现新功能。
步骤 2 – 初始需求
在撰写提案并发送出去之前,收集一些初始需求并弄清楚它可能是什么样子可能是一个好主意。不要担心细节,因为社区稍后会帮助完善这些细节。在考虑 OpenStack 项目时,一些主要需求是水平可扩展性、多租户、模块化 API、REST API、区域和位置感知,以及没有单点故障(高可用性)。在进入服务细节之前,这已经是一套相当繁重的要求,但它将帮助您思考如何构建服务。您可能需要偏离传统的思维方式来构建特定的服务。例如,在机架或数据中心中有效的方法可能不适用于云环境。您需要提前考虑到这一点,并说明与人们期望的不同之处。对于队列服务,这意味着不采用某些队列协议和服务中看到的传统方法,而是集成来自分布式服务的思想。
多租户云与许多人习惯的环境非常不同,通常需要不同的方法来解决问题。如果有人告诉您您是在重新发明轮子,请考虑他们的担忧,但也要意识到您可能不是。您可能正在制造一台喷气发动机。
步骤 3 – Wiki 和邮件列表提案
一旦您有了好的想法和粗略的提纲,您可能需要在发送给所有人之前让几个人提供反馈。然后,您需要在 OpenStack wiki 上创建一个新的 wiki 页面,并向 公共邮件列表 发送一条消息,提及 wiki 页面并要求社区反馈。例如,我撰写的队列服务提案 可以在这里找到。邮件列表中有大量的集体经验和脑力,这将有助于指出提案中的任何问题。您最初提出的服务可能与您实际构建的服务看起来完全不同。而且,您提出的服务可能不适合云或 OpenStack。社区将帮助理顺所有这些细节。
步骤 4 – 等待
人们可能需要一段时间才能跟上公共邮件列表,所以请耐心等待。通过其他方式(博客、推文、irc 等)让人们了解该提案,并帮助促进人们回复时的对话。
步骤 5 – 原型
一旦您觉得社区对该提案感到满意并且它是一个可行的想法(不要期望达成共识),就对其进行原型设计!这表明您是认真的,并且这项练习将有助于解决提案中的更多问题。让社区了解它,并再次等待任何反馈。这不需要任何花哨的东西,对于队列服务,我在周末完成了这个。
步骤 6 – 名称和语言
现在到了困难的部分,选择项目名称。我建议不要在邮件列表中使用它,因为对于不太重要的问题来说,这会产生很多噪音。请向可能也感兴趣的几个人询问想法,并确保它尚未被占用(在 github、Launchpad、Google 等上搜索)。对于队列服务,我们决定使用“Burrow”。
您还需要确定最合适的语言。对于中间件和服务,Python 是一个不错的默认选择。如果效率是一个问题,请查看 Erlang 或 C/C++。请务必向列表发送另一封邮件并要求反馈。对于队列服务,我最初提出了 C++,并以 Erlang 作为替代方案,因为效率是一个主要问题(尤其是在利用多个核心方面),社区的回应褒贬不一,但对 Erlang 的热情更高。
步骤 7 – 在 Launchpad 上启动项目
我们正在使用 Launchpad 进行 OpenStack 项目管理。您需要创建一个项目和几个组来管理它。例如,队列项目可以在 这里找到。这些组具有以下角色(将 burrow 替换为您的项目名称)
- burrow – 任何人都可以加入的公共组。这目前包括主 OpenStack 邮件列表中的成员,但我们设置方式如下,以防需要将项目分解为自己的列表。
- burrow-drivers – 负责维护项目、管理蓝图和发布版本的组。
- burrow-core – 负责执行代码审查的组。
- burrow-bugs – 负责管理错误的组。
步骤 8 – 锁定发布和里程碑计划
虽然现在不重要,但从一开始就与 OpenStack 发布周期一起工作可能是一个好主意。发布目前每三个月一次,每个发布都设置了里程碑,用于功能冻结、错误冻结和发布。请参阅 发布页面 以获取更多详细信息。Launchpad 使管理起来非常简单,您只需创建一个新的系列(例如,现在是“cactus”),并在该系列中创建几个里程碑用于冻结和发布。如果您需要任何帮助,请在邮件列表或 IRC 上提问,但一个好的经验法则是遵循其他成熟项目(如 Nova)的做法。
步骤 9 – 编码!
开始工作并尝试招募其他开发人员来帮助您。通过 IRC、邮件列表、planet.openstack.org 和推文向社区更新进度。
步骤 10 – 提交给项目监督委员会
直到此时,您的项目还不是一个官方的 OpenStack 项目。它是由社区推动的、经过深思熟虑的想法,可能已经有了一个良好的开端。一旦项目能够独立存在,您需要使用 此页面 向 POC 提出提案。您可能不需要最终版本,但您需要一个功能更强大、更健壮的原型。我一直在推动的队列服务尚未提出,所以您可能需要谨慎对待所有这些。我希望在 4 月作为 Cactus 发布的一部分提出第一个版本。
最终想法
此过程会有所不同,并且肯定可以改进。我正在说明我使用新项目的方法,但现有项目显然需要采取不同的路线。但要记住的主要思想是,任何 OpenStack 项目都应被视为由社区驱动的,而不仅仅是由个人或公司驱动的。一个或多个个人最初可能会承担社区的大部分工作,但社区的担忧和反馈应始终受到最重要的重视。
发表回复