`
zhykhs
  • 浏览: 61750 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

您真的明白什么是可伸缩性吗?

阅读更多

“可伸缩性(Scalability)”是软件厂商常常在新闻稿中用到的一个词(也是人们站在饮水机旁谈论的一个词),但这个词在很多情况下都被误解了。例如,很多人说起可伸缩性的时候其实指的是性能和高可用性。Royans K Tharakan试图回答“什么是可伸缩性”这个问题,他说: 可伸缩性,简单来说,是以更大的规模来做您现在所做的事。伸展一个Web应用的规模在于让更多的人使用您的程式。假如您没法找出方法在伸展规模的同时提高性能,没关系。而且只要您能够伸展规模来处理更大数量的用户,那么有几个单点故障(single point of failure)也没关系。 Royans解释说如今我们在面对规模伸展的时候有两个选择:

◆纵向的可伸缩性 - 在同一个逻辑单元内增加资源来提高处理能力。这样的例子包括在现有服务器上增加CPU,或在现有的RAID/SAN存储中增加硬盘来提高存储量。

横向的可伸缩性 - 增加更多逻辑单元的资源,并令他们像是个单元相同工作。大多数集群方案、分布式文档系统、负载平衡都是在帮助您提高横向的可伸缩性。 架构师们都在为达到线性的可伸缩性而挣扎,目的是让系统产出的增长和系统中投入资源的增长保持稳定的比率。然而,增加资源会导致一般耗费(overhead)的额外增长,因此难以达到线性的可伸缩性。Royans将之称为“伸缩性因子”,并用他来区分各种类型的伸缩能力:

◆假如在您扩大规模的时候伸缩性因子保持为常数,这种叫做线性伸缩性。

◆但很可能有些组件并不像其他组件那么适应规模的增长。小于1.0的伸缩性因子叫做次线性伸缩性。

◆话说回来,也可能因为增加更多组件而获得更佳的性能(在RAID系统中跨多个磁盘的I/O,当磁盘越多,性能越好)。这种叫做超线性伸缩性 。

◆假如应用程式没有专门为可伸缩性而设计,有可能当规模扩大的时候情况会变糟。这种称为负伸缩性。 跟软件研发中的许多事物相同,这里也没有适合一切情形的银弹能够解决您的伸缩性问题。Royans建议说,“假如您急切需要可伸缩性,向纵向发展可能是最容易的”,但注意“不幸的是纵向伸展会随着您的规模增长而越来越昂贵”,而且“无穷的横向线性伸缩性只是难以达到,而无穷的纵向伸缩性绝不可能”。他继续说: “从另一方面来说,横向可伸缩性并不需要您购买越来越昂贵的服务器。他的本意是用普通的存储和服务器方案来实现规模伸展。但是横向可伸缩性也不便宜。应用必须从建造的最底层就加以考虑才能在多台服务器上运行得像一台服务器相同。” Royans最后建议应该考虑任何的层次才能解决可伸缩性问题: “对于一个成功的Web应用,任何的层次都要同样能够应付规模的增长。包括存储层(集群文档系统、S3等)、数据库层(分区、联合)、应用层(memcached、scaleout、terracota、tomcat clustering等等)、Web层、负载平衡、防火墙等等。比如,假如您没办法实现多个负载平衡控制器来处理未来的网络流量,不管您在Web层的横向伸缩性上扔下多少钱,都不会有什么效果。您的流量始终被限制在一个负载平衡控制器能够承受的程度。

分享到:
评论

相关推荐

    可伸缩的android控件

    在Android开发中,创建可伸缩的控件是一项常见的需求,尤其在设计用户界面时,为了提供更好的用户体验,开发者往往需要实现自定义的动画效果。本文将深入探讨如何基于API 17创建一个可伸缩的Android控件,并讨论如何...

    你为什么一个要分成3个包,被你啃了

    这种方式可以提高系统的敏捷性和可伸缩性。 6. **软件打包**:在软件发布时,有时会将不同功能的文件打包成多个安装包,以便用户根据需求选择安装。例如,一个程序的基础功能和额外插件可能分别打包,让用户按需...

    mpg是什么格式,如何打开和播放.docx

    另外,这种文件格式还包含了以前 MPEG 压缩标准所不具备的比特率的可伸缩性、动画精灵、交互性甚至版权保护等一些特殊功能。这 种 视频格式的文件扩展名包括.asf、.mov 和 DivX AVI 等。 需要注意的是,MPEG-3 编码...

    软件架构模式

    这种模式提高了系统的可伸缩性和容错性,但增加了部署和管理的复杂性。 3. 客户-服务器(C/S)架构:客户端向服务器发送请求,服务器处理请求并返回结果。这种模式广泛应用于网络应用,但客户端可能需要处理大量...

    珍惜时间的演讲稿15篇.docx

    我们还要强调时间的公平性与可伸缩性。每个人每天都有相同的24小时,但如何分配和使用这些时间,就体现了个人的差异。有效的时间管理可以让时间变得更加“宽广”,让24小时里能够完成更多的事情。教育学生如何合理...

    一篇文章让你明白运维发展的方向.docx

    运维是互联网业务中不可或缺的一环,它涉及到基础设施的建设和维护,确保线上服务的稳定性和高可用性。随着互联网业务规模的扩大,运维工作逐渐细化,形成了多种专业化的岗位。这篇文章将探讨运维的发展方向,帮助你...

    软件架构资料(有部分火龙果的资料)

    这种架构可以提高系统的可伸缩性和容错性。 4. C++在软件架构中的角色:C++是一种强大的、面向对象的编程语言,常用于构建高性能、低级别的系统组件。在软件架构中,C++可以用于编写系统核心或关键性能敏感的部分。...

    谷粒商城-课件和文档整理.zip

    而分布式和微服务是现代互联网应用的重要设计模式,它们允许我们将大型复杂系统分解为可独立部署的小型服务,提高系统的可伸缩性、灵活性和容错性。 基础篇可能涵盖了SpringCloud的基础概念和使用方法,如Eureka...

    713三角形稳定性.ppt

    例如,可伸缩的晾衣架、折叠门、活动衣架等,都充分利用了四边形的这一特点。在帐篷框架和折叠椅子等设计中,通过添加斜杆或交叉支撑,四边形的稳定性得到了显著提升。 从数学的角度来看,三角形的稳定性与四边形的...

    2020秋八年级数学上册第十一章三角形11.1.3三角形的稳定性导学案无答案新版新人教版

    稳定性提供了结构的坚固,而四边形的可变性则允许了设计的灵活性。在实际问题中,我们需要根据需求来选择和利用这两种特性。 课堂检测部分涵盖了对三角形稳定性和四边形不稳定性理解的检验,包括判断题和应用题,...

    高并发高性能服务器

    5. **微服务架构**:将大型应用拆分为一系列小型、独立的服务,每个服务都可以单独部署和扩展,从而提高系统的可伸缩性和可靠性。 6. **并行计算**:利用多核处理器的优势,通过并行计算可以同时处理多个任务,提高...

    感恩我师 回想往事——感恩日记教师节ppt模板.rar

    矢量图形的使用是本套模板的一大特点,它们的可伸缩性保证了无论幻灯片在何种大小的屏幕上展示,都能保持清晰和细腻的质感。这种设计的灵活性允许用户根据个人喜好和实际需要,对模板进行细微调整,从而打造独一无二...

    从零开始写分布式服务架构pdf和源码

    分布式架构的目标是通过解耦各个组件,提高系统的可伸缩性、容错性和灵活性。它涉及到负载均衡、服务发现、通信协议、数据一致性、错误处理等多个关键领域。书籍《架构探险:从零开始写分布式服务架构》可能会涵盖...

    J2EE 拍卖系统

    这些组件协同工作,构建出具有高可用性、可伸缩性和安全性的应用。 1. **Servlet**:Servlet是Java Web应用的基础,负责处理HTTP请求。在这个拍卖系统中,Servlet可能被用来接收用户的出价请求,更新拍卖品的状态,...

    高级编程项目应用开发

    同时,学习运维知识,如Docker容器化、Kubernetes集群管理,能提高部署效率和系统的可伸缩性。 7. **持续集成/持续交付(CI/CD)**:使用Jenkins、GitLab CI/CD等工具实现代码的自动构建、测试和部署,加速开发迭代...

    Developing Web Applications for WebLogic Server

    这意味着开发者可以在WebLogic Server上构建企业级应用,利用Java EE带来的模块化、可伸缩性和安全性特性。 BEA WebLogic Server 8.1版本 文档中提及的是WebLogic Server 8.1版本。虽然这是一个较早的版本,但其...

    服装广告语大全.pdf

    3. **差异化策略**:“稍微多花点钱,你就会明白为什么有那么多人喜爱‘克拉涅特’了”,这是通过比较和差异化展示产品的价值,数据库中的市场细分分析能帮助找出产品的独特卖点。 4. **质量标准**:“全球以此为...

    基于云计算的邯郸市测土配方施肥“一网两站”服务体系建设研究.pdf

    云计算技术是现代信息技术的核心之一,它通过互联网提供动态的、可伸缩的、虚拟化的资源,用户无需了解提供资源的底层基础设施。在农业领域,云计算可以大幅提升农业生产和管理的效率,例如在邯郸市测土配方施肥“一...

    2021年大学生实习总结范文:工地认知实习.docx

    通过这次实习,我对建筑行业的实际操作有了更深的体会,明白了理论知识与实践操作的紧密结合对于成为一名合格的建筑专业人才的重要性。这次工地实习经历无疑是我专业学习道路上的重要里程碑,它为我未来的职业生涯...

Global site tag (gtag.js) - Google Analytics