开发者应该知道的 OpenStack 背后的设计准则

OpenStack是一种开源产品,得到了一大批志愿者和领薪代码贡献者的支持,它让人们意识到了一种全面审查的架构和一种深思熟虑的设计具有的重要性,这种架构和设计似乎贯穿着OpenStack峰会的主题。无论这种意识是切实存在的还是只是个人感觉,出席亚马逊re:Invent或谷歌I/O等大会的人士对于旗舰产品展现出来的关注度和责任感似乎不如他们在出席2015年5月OpenStack大会时展现出来的关注度和责任感。

伴随众多OpenStack峰会与会人士的这种个人投入而来的是,他们更加深入地了解每天做出的架构和设计方面的逐步决策具有的重要性,那是由于这些决策可能会对未来的版本发布带来影响。正因为如此,在评估每一个变动、更新、补丁和贡献时,既要顾及OpenStack使命声明,又要顾及OpenStack的基本设计准则。使命声明既简单又野心勃勃:力求开发出无所不在的OpenStack云计算平台,有望满足公有云和私有云(无论规模大小)的要求,为此要做到易于部署、能够大规模扩展。说到编写和部署代码,下面所列的几条设计准则来得更重要一点。这样一来,了解这些准则如何适用于OpenStack软件的发展道路显得至关重要。

可扩展性和弹性。第一条设计准则明确规定,“可扩展性和弹性是我们的主要目标;”第二条准则表明,限制主目标的任何组件都应该是可选的。这打造了一个令人关注的生态系统,其中有数百个大有帮助、不过随意性的插件。Dark Secret Software公司的首席执行官Sandy Walsh是名经验丰富的OpenStack软件开发人员,他说:“如果你看一下OpenStack代码,就会发现有许多可选的组件。一切基本上就是插件。”

异步性。等待响应、阻止入站传输会要了大规模企业系统的命。因而,OpenStack软件开发的第三条准则就是“一切都应该是异步的。”当然了,这也有其不足之处。大量耗用内存的应用程序会从异步操作中受益匪浅,而大量耗用处理器的应用程序将会饱受其苦。但是单一机器上的孤立性能并不是OpenStack的目标,大规模横向扩展性才是其目标。正因为如此,异步性是一个优先事项。Walsh说:“可扩展性和弹性是两个主要目标。这种系统一定要能够扩展。”

横向扩展。第四条设计准则认为,“所有代码应该能够横向扩展。”纵向扩展是个优点,但是编写随着越来越多的内存和处理器安装到机器上,可以相应扩展的代码并不需要大量的规划。另一方面,开发一个能够横向扩展的系统可能是个挑战,尤其是随着参与节点的数量增至三倍或四倍,更是困难重重。所有设计决策务必要牢记横向扩展这一条准则。

状态管理。企业Java应用程序遇到的最常见的性能问题之一就是,随意使用基于状态的变量,导致企业系统运行速度减慢,几乎不可能实现线性扩展。外设JVM语言已证明了使用不可变数据在可扩展性方面具有的好处,所以发现第四条准则是“使用无共享(SN)架构或分片(sharding)”也就不足为奇了。

一切都必须分布式。下一条准则就是“一切都要分布式”,尤其是“逻辑”。Hadoop等大数据成功故事一再证明了这个理念;如果能确保数据和逻辑能协同运行,而不需要网络调用,就能大大改善性能和可扩展性。

测试、测试、测试。最后,最终一条准则坚决主张开发人员必须“测试一切”,这不足为奇。要是没有经过一系列全面的测试,任何东西都不得进入代码库;未经测试就贸然提交的代码、补丁或特性改进根本得不到接受和认可。这与其说是一条准则,还不如说是标准的尽职调查,而这也是确保没有遗漏的好方法。

想法简单,执行复杂。如果这些简单的设计准则运用于异常复杂的问题,开发的OpenStack软件就会变得极其令人关注。一个典例就是OpenStack的分布式对象存储系统Swift的工作方式。SwiftStack的技术主管John Dickinson说:“借助Swift,你将存储的数据与用来存储数据的实际介质分离开来。相比较过去的数据存储策略,这正是让Swift成为全新策略的特性。”有了这种方法,开发方面的人员只需要操心将数据传送给Swift,将Swift当成它似乎就是一种公用资源。从操作的角度来看,这里要担心的唯一问题是,服务器和驱动器集群是否处于良好的工作状态。这种高度可扩展的方法日臻完善,运用OpenStack设计准则来处理这个难题:在基于云的系统中管理分布式数据。

虽然这些准则对OpenStack及其周边项目和插件的日常发展起到了关键作用,但有些经验或心得却是所有软件开发人员都可以借鉴的。测试、开发无状态应用程序、让可扩展性成为优先事项,以及考虑程序逐渐変得庞大后其性能将会如何,这些都是每一个软件开发人员都应该运用到本企业组织和软件项目的最佳实践。

原文发布于微信公众号 - 云计算D1net(D1Net02)

原文发表时间:2015-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java面试笔试题

C/S 与 B/S 的区别

1.硬件环境不同:   C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门server提供连接和数据交换服务.   B/S 建立在...

1161
来自专栏BestSDK

一文揭秘,爬虫那些不为人知的套路

1、真实世界的爬虫比例 大家应该听过一句话吧,大概意思是说,整个互联网上大概有50%以上的流量其实是爬虫。第一次听这句话的时候,我还不是很相信,我觉得这个说法实...

4999
来自专栏北京马哥教育

那些你不知道的爬虫反爬虫套路

爬虫与反爬虫,是一个很不阳光的行业。 这里说的不阳光,有两个含义。 第一是,这个行业是隐藏在地下的,一般很少被曝光出来。很多公司对外都不会宣称自己有爬虫团队,甚...

4036
来自专栏携程技术中心

干货 | 那些你不知道的爬虫反爬虫套路

作者简介 崔广宇,携程酒店研发部开发经理,与去哪儿艺龙的反爬虫同事是好基友。携程技术中心“非著名”段子手。 前言 爬虫与反爬虫,是一个很不阳光的行业。 这里说的...

3586
来自专栏CIT极客

【极客周刊】支付宝PK微信?AI程序员面世?等等重大事件等你来看!

4496
来自专栏大前端开发

从编程小白到全栈开发:先定一个小目标

经过我上一篇文章的介绍,你是不是感觉自己开始对程序猿这个群体感兴趣了,或已立志成为他们中的一员?

1104
来自专栏灯塔大数据

探秘|那些你不知道的爬虫反爬虫套路

相爱相杀的爬虫与反爬虫 ? 前言 爬虫与反爬虫,是一个很不阳光的行业。 这里说的不阳光,有两个含义。 第一是,这个行业是隐藏在地下的,一般很少被曝光出来。很...

4819
来自专栏蓝天

软件开发心得点滴记录

自从2002年大学毕业后一直沉浸于软件开发之路,平时喜欢思考和归纳,时常会产生一点心得和想法,回想起来是一笔宝贵的财富,只可惜陆陆续续遗忘了。今天立此文章,希...

801
来自专栏ArrayZoneYour的专栏

微服务革命:应用,数据的容器化

近几年来,微服务架构和基于容器的虚拟化技术已经越来越多地在软件开发社区中被提及。Adrian Cockcroft就是这方面公认的极有远见者之一,他在2014年欧...

1974
来自专栏华章科技

干货 | 那些你不知道的爬虫反爬虫套路

崔广宇,携程酒店研发部开发经理,与去哪儿艺龙的反爬虫同事是好基友。携程技术中心“非著名”段子手。

2201

扫码关注云+社区

领取腾讯云代金券