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

原创 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)

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

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



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

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

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 大型网站技术架构(四)--网站的高性能架构 大型网站技术架构(五)--网站...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014年06月12日 07:48
  • 7520

程序的灵活性与可扩展性

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

大型网站技术架构(六)--网站的伸缩性架构

网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能,通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的  规模总是在不断扩大。...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014年06月09日 08:49
  • 5072

可伸缩系统的架构经验

最近,阅读了Will Larson的文章Introduction to Architecting System for Scale,感觉很有价值。作者分享了他在Yahoo!与Digg收获的设计可伸缩系...
  • happyduoduo1
  • happyduoduo1
  • 2016年06月29日 13:24
  • 713

程序的可维护性和可扩展性

可维护性是指当需要修改程序的某个模块时,对其他模块的影响和修改的代价;可扩展性是指当需要为程序添加新的功能时,对其他模块的影响和添加的代价,可以从下面几个方面提高程序的可维护性和可扩展性   代码...
  • dongye2016
  • dongye2016
  • 2017年08月27日 02:13
  • 531

系统可用性评估

移动互联网时间,似乎大家都在强调架构或服务的高可用?那什么是高可用性呢?首先,我们来了解下什么是系统的可用性(System Usability),即系统服务不中断运行时间占实际运行时间的比例,所以高可...
  • hexieshangwang
  • hexieshangwang
  • 2015年10月16日 09:03
  • 423524

《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记

造成开销的操作包括: 1. 线程之间的协调(例如:锁、触发信号以及内存同步等) 2. 增加的上下文切换 3. 线程的创建和销毁 4. 线程的调度 一、对性能的思考 1 性能与可...
  • love_world_
  • love_world_
  • 2014年05月31日 07:49
  • 1455

《Java并发编程实战》---性能与可伸缩性

多线程的目标是提升整体性能,提升zi'yuan'li'yong'l
  • zhangbinalan
  • zhangbinalan
  • 2014年11月04日 14:17
  • 531

性能与可伸缩性

目录 11.1 对性能的思考 11.1.1 性能的提升意味着什么 提升性能意味着用更少的资源做更多的事情,  在任何时刻,提升性能的前提是要保证程序的正确性 当操...
  • qq1602382784
  • qq1602382784
  • 2016年06月23日 08:59
  • 146

可伸缩性/可扩展性(Scalable/scalability)

可伸缩性(可扩展性)是一种对软件系统计算处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展成长过程中,软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性...
  • onemetre
  • onemetre
  • 2014年11月22日 22:51
  • 1614
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:科普一下,什么是网站系统的性能,可用性,可伸缩性,可扩展性?
举报原因:
原因补充:

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