云计算:不完美的进步

26.11.2014  17:16
  云服务的市场营销包括从内部IT平稳过渡到完美的、智慧无限的云,解决所有的IT问题或者至少是把IT问题外包出去。所有云厂商的演示中包括了一些图表,用于展示用户的演进过程。更高层次的外包趋势必然是向上和向右的。从云那儿买基础设施吗(IaaS)?很好。购买全新的平台(PaaS)?那更好了!从云那儿购买整个软件堆栈?那是最好了!还要承认改变并非总代表进步。

      革新通常需要布道者促使主流用户采用。但当我们钦佩云说客的热情时,现在,我热爱云计算,我个人以及工作中经常使用云计算。对开发人员、开始建立新应用的专业人士、对于需要快速扩展以及无告警产生的服务运营人员,对于需要远程访问数据或者应用的员工以及很多其他用例来说,云有众多不可替代的优势。

      然而,很多重要的IT特性无法通过外包实现魔法般的改进。实际上,很多特性下降了-有些下降令人担忧。

      置身云中

      前面提及的关注点促使IT考虑购买弹性云基础设施。你可以扩展到尽可能多的服务器,然后缩小规模,然后再次扩展-根据心情变化资源的数量。但这些服务器具备弹性吗?你可以修改CPU数量、内存大小或者分配的其他资源吗?这好像不行。服务器可能具备弹性,但其不能扩容-甚至不能以运行VMware、PowerVM或者你最爱的hypervisor的系统那样直截了当的方式进行扩容。

      然后你从云供应商那获得了保证,也有与在线运行时间、延迟以及事务一致性相关的API.这通常会忽略清晰的服务级目标而且几乎不包括硬服务级协议--这一切脆弱得令人难以置信。99.9%的在线运行时间?在十年前这是一个很棒的目标,但在2014年却只能达到没有吸引力的三个九?经营良好的企业立刻否定了该目标。远程办公的企业往往希望业务连续性达到4个、5个或者更多个9.

      或者考虑记录数据的云API.甚至很难得到可靠的目标指标。当你这么做时,通常会把组织弄糊涂,像"大多数会话在秒级提交。"几乎所有的商业数据库系统以及企业数据处理中间件都会在秒级,有时是在微秒甚至是纳秒级进行大量交易,尤其是针对大量事务卷比如HFT进行调整过的场景下。

      因为是高度分布的计算,让我们打一些折扣并说"几秒钟"已经够精确并足够快了。即使在该标准下,仍旧会对在几秒钟内没有提交的会话感到困惑。大多数云服务拥抱了"最终一致性",这意味着你对会话何时会最终提交没有明确的概念。几分钟?一个小时?更久?并没有指定。我了解真实的云服务偶尔会在一个小时后更新-有很多知名的服务提交事务并无顺序而且会在数分钟之后完成。

      使用大多数API,无法了解最新的数据什么时候到来。你必须一直轮询,与你看到的数据进行对比然后判断是否有新数据出现。对于习惯于稳固、可靠的两阶段提交,"最终一致性"听起来更像是"不一致".

      这和二三十年前的主流并发性保证中间件提供的功能类似。但在云计算的世界中,这非但不可笑反而是最先进的。对于高度分布、尤其是可扩展的架构,这种机制无法修改。

      我不是说这些超大规模设计很糟糕。它们强大的功能的确令人惊讶而且对于很多有趣以及有价值的用例非常有用-比如构建搜索引擎以及数据决策。有时它们能够在几秒钟内以看起来非常神奇的方式进行全局更新。相对于大规模以及最低的成本,你不可能击败它们。但当你在执行交易或者希望获得实时控制以及可预见性,或者需要保证可用性、性能变化不明显时,大规模系统往往很容易被大多数集中式、非云设计所超越。云以及超级规模能够做一些了不起的事儿,这是任何其他方式无法做到的。然而要在某些方面进行妥协-有些让步相当令人意外,在我们想当然的属性上出现了退步。 来源:TechTarget中国