- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
怎样编写高扩展性的应用
2021-01-12
在编写一个应用时,我们经常考虑的是该应用应当如何实现特定的业务规律。但是在渐渐进展出越来越多的用户后,这些应用经常会暴显露一系列问题,如不简约增大容量,容错性差等等。这经常会导致这些应用在市场的拓展过程中无法快速地响应用户的需求,并最终得到商业上的先机。
通常情况下,我们将应用所具有的用来避开这一系列问题的特征称为非功能性需求。信任您已经能够从字面意义上理解这个名词了:功能性需求用来供应对业务规律的支持,而非功能性需求则是一系列和业务规律无关,却可能影响到产品后续进展的一系列需求。这些需求经常包括:高可用性(High Avalibility),扩展性(Scalability),维护性(Maintainability),可测试性(Testability)等等。
而在这些非功能性需求中,扩展性可能是最好玩的一种了。因而在本文中,我们将对如何编写一个具有高可扩展性的应用进行讲解。
什么是扩展性
假设我们编写了一个Web应用,并将其置于公有云上以向用户供应服务。该应用的创意格外新颖,并在短时间内就吸引了大量的用户。但是由于我们在编写该应用时并没有期望它来处理这么多用户的恳求,因而它的运转速度越来越慢,甚至可能消灭服务没有响应的情况。频繁发生这种事情的结果就是,用户将无法忍耐该应用经常性地宕机,并将查找其它类似应用来获得类似的服务。
该应用所缺少的能够依据负载来对处理力量进行适当扩展的力量便是应用的扩展性,而其衡量的标准绳是处理力量扩展的简约程度。假如您的应用在添加了更多内存后就能运转得更好,或者通过添加一个额外的服务实例就能处理服务实例过载的问题,那么我们就可以说该应用的扩展性情外好。假如为了处理更多的负载而不得不重写整个应用,那么应用的开发者就需要在多多留意应用的扩展性了。
较好的扩展性不只可以省却您重写应用的麻烦,更重要的是,它会挂念您在市场的抢夺中获得先机。试想一下,假如您的应用已经消灭了处理力量不够的苗头,却没有适当的处理方案来提高整个系统的处理力量,那么您能做的事情只能是重新编写一个具有更高处理力量的具有同一个功能的应用。在该段时间内,您的应用的处理力量显得越来越捉襟见肘。而体现在客户层面上的,则是您的应用的响应速度越来越慢,甚至有时都无法正常工作。在新应用上线之前,您的应用将渐渐地流失客户。而这些流失的客户则很有可能变成类似软件的忠实客户,从而使得您的产品得到了市场竞争的先机。反过来,假如您的应用具有格外良好的扩展性,而您的竞争对手并没有跟上用户的增长速度,那么的应用就有了完全超越甚至压制竞争对手的可能。
当然,一个成功的应用不应当仅仅拥有高扩展性,而是应当在一系列非功能性需求上都做得很好。例如您的应用不应当有太多的Bug,也不应当有特殊严峻的Bug,以避开由于这些Bug导致您的用户无法正常使用应用。同时您的应用需要拥有较好的用户体验,这样才能让这些用户格外简约地生疏您的应用,并产生用户粘性。
当然,这些非功能性需求并不只仅局限在用户的角度。例如从开发团队的角度来讲,一个软件的可测试性经常打算了测试组的工作效率。假如一个应用需要在几十台机器上逐一安装部署,那么每次测试人员对新版本的验证都需要几个小时甚至成天的时间才能预备完毕。测试组也就很自然地成为了该软件开发组中效率最为低下的一部分。为此我们就需要招入大量的测试人员,大大地添加了应用的全体开销。
总的来说,一个应用所具有的非功能性需求格外多,如完整性(Completeness),正确性(Correctness),可用性(Availability),牢靠性(Reliability),平安(Security),扩展性(Scalability),功能(Performance)等等。而这些需求都会对如何分析,设计以及编码提出肯定的要求。不同的非功能性需求所提出的要求经常会发生冲突。而到底哪个非功能性需求更为重要则需要依据您所编写的应用类型来打算。例如在编写一个大规模Web应用的时候,扩展性,平安以及可用性较为重要,而对于一个实时应用来说,功能以及牢靠性则占据上风。在这篇文章中,我们的争辩将次要集中在扩展性上。因而其所提出的一系列建议可能会对其它的非功能性需求产生较大的影响。而到底如何取舍则需要读者依据应用的实际情况自行打算。
应用的扩展方法
好的,让我们重新回到扩展性这个话题上来。导致一个软件需要扩展的最根本缘由实际上还是其所需要面对的吞吐量。在用户的一个恳求到达时,服务实例需要对它进行处理并将其转化为对数据的操作。在这个过程中,服务实例以及数据库都需要消耗肯定的资源。假如用户的恳求过多从而导致应用中的某个组成所无法应对,那么我们就需要想方法提高该组成的数据处理力量。
提高数据处理力量的方法次要分为两类,那就是纵向扩展及
文档评论(0)