说说云架构的可伸缩性带来的那些潜在风险

应用程序自动规模伸缩以适应负载需求确实非常理想,但其中也蕴含着严重的复杂性与潜在风险。

不管大家有没有听说过,最近几年市场上出现了一类极具吸引力的新方案——也就是云服务器。虽然这个名称本身并没有实际意义,但大家可以将云服务器理解成一系列包含有计算与I/O资源的实例,我们能够根据自己的需求随时将其实例化或者关闭。总之,亚克西。

不过单靠云技术概念还远不足以构建起理想国。没错,它的出现让构建可扩展环境变得非常轻松,但管理这类环境同样非常复杂——特别是考虑到由业务变动引发的自动缩放与服务增长问题。在这种情况下,大家可能会突然发现自己找不到一种能够搞定一切状况的标准化方案。

我们过去一直将可扩展能力视为一种相对比较缓慢的调整选项。如果我们刚刚招徕到一大批新员工,那么IT部门就需要为他们提供额外的扩展服务器资源以支撑其存储与应用需求,有时候甚至还得另行构建强大的数据库集群等方案。我们需要花几个月甚至几年时间来不断规划规模伸缩机制。相比之下,大型互联网站点则包含有大量物理服务器,而不必考虑当前实际负载——这是因为他们需要为时刻可能出现的峰值以及日常状态下的平稳资源需求做好准备。而在多数情况下,这些服务器设备都处于闲置状态。

但现在规模缩放已经成为一项能够瞬间完成的任务。我们可以根据意愿生成新的实例,并在负载峰值结束后将其弃用。我们能够在几分钟而非像过去那样利用几个月完成规模伸缩调整。不过这种自动化机制当中也包含有潜在风险,而且很难得到准确调整。自动化应用程序在规模伸缩当中包含众多变量与调整空间,而不同应用在这些方面拥有着独特的要求——换言之,对某款应用非常适用的方案在迁移至另一应用时往往效果极差。总结来讲,细节就是其原罪。

举例来说,我们可以设想一套典型的分层Web应用程序。在这里,我们拥有数据库、存储以及前端应用服务器这几大元素。为了能让这套基础设施根据负载变化情况实现动态规模伸缩,我们需要监控所有这些组成部分,并根据实际负载决定其变动方式——同时又要考虑到其它部分负载给其带来的影响。

如果我们的前端服务器开始出现峰值,那么我们则需要引入更多前端资源,但同一时间数据库服务器的负载强度可能并没那么大,这代表着我们需要在增加前端服务器数量的同时降低数据库服务器数量。接下来,存储I/O又会带来新的问题,因此我们也需要为其添加更多资源。

在此之后,当负载开始重新回归平稳时,我们则需要在基础设施当中释放这些多余资源——但不能释放得太多,也不能释放得太快。我们还需要在调整规模的同时为各处负载添加标签,因为一个区域的容量降低可能会对另一区域产生负面影响。如果我们减少了数据库资源,那么应用程序服务器上的负载可能会因此出现瓶颈,同时前端服务器则不受影响——总之,我们需要对其关联保持高度关注。而且单纯增长应用程序服务器而不解决负载资源紧张的问题,显然也是于事无补。

正如大家所见,在这种情况下我们的决策树将变得极为庞大,而且其中很可能包含有重大缺陷。我们需要部署大量监控机制与计时工具,记录等待状态、阈值以及计数。此外,我们还得将无数声明与比较规则纳入进来以构建起一套自适应基础设施,且其逻辑本身也需要受到监控与调整。这绝不仅仅是一项单纯的目标,而是一段不断延续的摸索过程。

如果基础设施的实际复杂程度超出我们之前设定的简单Web应用,那么可能还会涉及多种公共API集成、缓存与查询服务器、队列 NoSQL数据库服务器或者数量不等的现代服务组件,这将使得动态负载管理机制的复杂性呈指数级增长。很明显,这绝不是一句简单的“如果一台服务器超载了,就使用另一台”所能概括。

哦,另外需要强调的是,我们还没有考虑到相关应用程序在设计当中是否考虑到了快速规模伸缩场景。如果答案是否定的,那么我们将很难甚至根本无法对后端资源进行调整。

动态规模伸缩能力带来的收益是显而易见的。它能够以更低的使用成本为我们提供理想的性能水平与可用性表现,这无疑是一种双赢局面。然而,要发挥其固有优势也需要大家投入心血与代价,各位千万不要等闲视之才好。

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

原文发表时间:2015-09-17

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏成猿之路

掌握3个搜索技巧,在 GitHub快速上找到实用软件资源

原文:https://www.toutiao.com/i6589788915316556296/

1003
来自专栏DevOps时代的专栏

腾讯:手Q研发体系与工具实践

? 本文整理自国内首届 Jenkins 用户大会演讲《让大象跳舞,手Q研发体系与工具实践》 讲师 | 潘金赤 编辑 | 白凡 讲师简介 ? 潘金赤 腾讯高级...

4428
来自专栏ThoughtWorks

敏捷实践之Desk Check | TW洞见

今日洞见 文章作者来自ThoughtWorks:曲正平。图片来源于网络。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,...

3495
来自专栏云计算D1net

多云应用性能:IT专业人士的移动目标

你的应用的设计好坏会在多云环境中对性能产生影响。使用以下这些监控和管理技术来避免应用的性能问题。 对于大多数IT组织来说,“性能”意味着响应时间或用户体验的质量...

2694
来自专栏腾讯移动品质中心TMQ的专栏

探索式测试基础系列--初恋的味道

一、探索式测试基础系列 1、背景 在移动互联网时代,敏捷开发是主流的开发流程,功能的快速迭代让我们面临的问题就是如何应对各种需求变更,如何提升测试效率,要解决以...

2328
来自专栏数据和云

YH10:分布式存储解决方案zData

云和大数据时代的到来导致各行各业数据量的爆发,面对业务数据的日益剧增,企业的IT系统在性能、稳定性和扩展性等方面都面临前所未有的巨大挑战。如何有效应对云和大数据...

4444
来自专栏互联网杂技

如何输出一份专业优秀的交互文档?

在项目设计中,交互设计师与上游的产品经理,下游的视觉设计师,开发工程师和测试等岗位的工作密不可分。不论是承上启下的工作沟通, 还是方案评审的设计讲解,专业的交互...

1472
来自专栏Rainbond开源「容器云平台」

如何正确地迁移到云原生应用架构

2145
来自专栏ATYUN订阅号

谷歌为G Suite添加NLP功能,提高搜索效率并推荐相关内

对于G Suite客户来说,这是个好消息:谷歌正在向Docs,Sheets和Slides工作流注入一些自然语言处理(NLP)。The Mountain View...

1273

有效的云服务报警系统

原文作者:Venkat Pothamsetty

2901

扫码关注云+社区

领取腾讯云代金券