科普一下,什么是网站系统的性能,可用性,可伸缩性,可扩展性?

原创 2017年01月02日 23:24:34

最近在读李智慧大拿写的<<大型网站技术架构--核心原理与案例分析》,其中第三节提到了大型网站的核心架构要素,感觉受益匪浅,总结的非常到位。读完之后,马上总结一下,也算是对自己爱不释手的一本书,画上一个总结的句号。一般来说,架构除了关注功能性需求外,其实更重要的是要关注非功能性需求,比如,性能,可用性,可伸缩性,可扩展性。而且一旦架构决定下来,一般难以改变,所以要求我架构师从一开始就要设计一个满足性能,可用性,可伸缩性,可扩展性的架构。那么在这个之前,需要了解,什么是性能,可用性,可伸缩性,可扩展性?很多对其中的概念和意思混淆不清。下面,笔者就进行科普一下,什么是网站系统的性能,可用性,可伸缩性,可扩展性?

  • 性能(Performance)

性能是一个网站能够同时处理用户请求的表现能力。 不同的视觉,有不同的表现形式,性能的指标通常包括,响应时间,并发数,吞吐量,以及性能计数器等。

其中吞吐量和性能计数器比较难理解一些,

  • 吞吐量其实指的就是单位时间内,系统处理的请求数量。 TPS(每秒的事务数),HPS(每秒的HTTP请求数),QPS(每秒的查询数)等等。性能一般通过缓存来解决。
  • 性能计数器,它描述的是服务器或者操作系统的一组指标,包括,对象与线程数,内存使用,CPU使用,磁盘和网络的I/O等等。
提高网站的性能,很多的手段,比如,浏览器访问优化,CDN加速,反向代理,分布式缓存,使用集群,代码和数据结构的优化,存储性能的优化等。

  • 可用性(Availability)

可用性是在某个考察时间,系统能够正常运行的概率或时间占有率期望值。考察时间为指定瞬间,则称瞬时可用性;考察时间为指定时段,则称时段可用性;考察时间为连续使用期间的任一时刻,则称固有可用性。它是衡量设备在投入使用后实际使用的效能,是设备或系统的可靠性、可维护性和维护支持性的综合特性。在大型网站应用系统中,衡量的指标一般是服务的可用性用几个9来表示。

高可用性一般通过负载均衡,数据备份,失效转移,提高软件质量,特别是发布时的质量来实现和保证的。

  • 可伸缩性(Scalability)

可伸缩性,是一种对软件系统计算处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展成长过程中,软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性增长,实现高吞吐量和低延迟高性能。

  • 纵向的可伸缩性——在同一个逻辑单元内增加资源来提高处理能力。这样的例子包括在现有服务器上增加CPU,或者在现有的RAID/SAN存储中增加硬盘来提高存储量。
  • 横向的可伸缩性——增加更多逻辑单元的资源,并令它们像是一个单元一样工作。大多数集群方案、分布式文件系统、负载平衡都是在帮助你提高横向的可伸缩性

可伸缩性,一般通过DNS域名解析负载均衡,反向代理负载均衡,IP负载均衡,数据链路层负载均衡,改进和提高分布式缓存的算法,利用NOSQL数据库的可伸缩性等等。

  • 可扩展性(Extensibility)

可扩展性,通常和可伸缩性混为一谈.在软件范畴上,是软件系统本身的属性,或者进一步说是设计的属性,代码的属性。因为我们经常说设计的可扩展性,代码的可扩展性.也可以说是系统设计的松耦合性。

实现方式:一般通过事件驱动架构和分布式架构来实现一个网站系统的可扩展性。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

并发性能和可伸缩性

线程的主要目的就是提高程序的运行性能。此外,线程还可以使程序在运行现有任务的情况下立即开始处理新的任务,从而提高系统的响应性。 性能的思考 提升性能意味着可以用更少的资源做更多的事情。但是提升性能...
  • weeweee
  • weeweee
  • 2013年02月20日 22:12
  • 643

系统伸缩性

系统伸缩性,是指在不改变系统软硬件设计,仅仅通过新增服务器的情况下,就能提升系统的处理能力。 系统成为大型的,分为2种,一种是开始就设计成大型的,例如12306网站,设计之初就要考虑能并发处理多少请...

推荐系统面临的问题

1 推荐算法的鲁棒性 由于推荐系统能够影响用户的购买行为,带来经济效益,因此越来越多的恶意用户设法通过影响推荐系统的行为来控制推荐系统以实现提高物品销量,损坏竞争对手利益,甚至破坏系统使其无法产...

大型网站技术架构(七)--网站的可扩展性架构

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 大型网站技术架构(四)--网站的高性能架构 大型网站技术架构(五)--网站...

可伸缩性原则

从最简单的水平来看,可伸缩性就是做更多的事情。更多的事情可以是响应更多的用户请求,执行更多的工作,或处理更多的数据。设计软件这件事本身是复杂的,而让软件做更多的工作也有其特有的问题。这篇文章针对构建可...
  • novelly
  • novelly
  • 2013年04月30日 12:08
  • 359

架构师必看-架构之美第15章伸缩性架构设计

3.1 简介       在设计系统架构时,一个比较有趣的问题就是确保系统在伸缩时的弹性。随着越来越多的系统运行在网络上或在互联网上提供访问,伸缩性正变得越来越重要。对于这样的系统,如果你希望误差的...

程序的灵活性与可扩展性

灵活性和可扩展性通常成对出现。程序的模型越是抽象,越要求灵活性和可扩展性。客户在需求描述的初始阶段往往对自己的业务模型并不熟悉。客户不是数学家和计算机专家,他们对自己的需求很难抽象出一个精确的模型来,...

伸缩性、可用性、稳定性(Scalability, Availability & Stability Patterns)

一 自我有要求的读者应该提出问题:(研习:掌握层次:)能力级别:不会(了解)——领会(理解)——熟练——精(why)——通(融汇贯通) 1.1 什么是Scalability, Availabilit...

可用性和可靠性的区别

可用性和可靠性区别简介 可用性(Availability)是关于系统可供使用时间的描述,以丢失的时间为驱动(Be Driven By Lost Time)。可靠性(Reliability)是关于系...

项目总结:工作流系统webservice服务

这个项目的功能是使用webservice方式完成两个系统间的数据交互,使用的框架是axis2。简单的总结一下项目中的几个问题: 开发客户端时要设置访问超时时间         使用axis生成的w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:科普一下,什么是网站系统的性能,可用性,可伸缩性,可扩展性?
举报原因:
原因补充:

(最多只允许输入30个字)