大型网站架构要素及常用手段
来源:互联网 发布:2017网络写手排行榜 编辑:程序博客网 时间:2024/04/30 14:27
“一般来说,设计网站的架构。除了关注功能需求以外,还需要关注性能,可用性,伸缩性,扩展性,安全性。”
性能:网站对并发请求的处理能力,有很多衡量指标,比如QPS,响应时间等。
可用性:1-网站不能对外提供服务的概率,通常用几个9来衡量。
伸缩性:网站能否通过添加硬件资源来提高处理能力。
扩展性:网站能否在不改变原有架构的基础上添加新功能。
安全性:你懂的。
其中,伸缩性和扩展性经常被大家混淆。伸缩性是指网站能够通过添加硬件资源提升服务能力,是一种性能需求。扩展性是指网站能否很容易的添加新功能,是一种功能需求。
为了完成以上5个方面的提升,作者总结了9种手段,分别为:分层,分割,分布式,集群化,缓存,异步,冗余,自动化,安全。
分层:将系统在横向维度上切割成几个部分,通过上层对下层的调用组成一个完整的系统。
分割:将业务在纵向维度上切割成几个部分,即业务分割。
分布式:通过分层和分割,系统被划分成了一些独立的模块,将每个模块部署在一个独立的服务器上,通过远程调用机制让这些服务器配合工作,实现分布式。
集群化:随着业务的扩大,系统中的每个模块部署在一台服务器上已经不堪重负,此时将每个模块部署到一个独立的集群中,每个集群内部通过负载均衡协调工作。
缓存:缓存是改善软件性能的第一手段,在网站中,缓存除了可以提升性能,还可以缓解后端应用和数据服务器的压力。
异步:分布式系统中的各个模块之间通过异步的方式通信,可以提高系统的响应速度。
自动化:主要集中在发布运维方面。
安全:一些常用的提升安全性的手段。
其中,分布式和集群化经常被大家混淆。分布式是指将一个大的系统分成多个小的子系统,每个子系统部署到一个服务器上(比如博客http://yizhenn.iteye.com/blog/2299859中的1图到2图)。集群化是在N个服务器上部署N份子系统,这N个服务器提供的是相同的服务(比如博客http://yizhenn.iteye.com/blog/2299859中的3图到4图)。
作者还重点介绍了网站的性能测试和可用性度量。
网站的性能测试指标主要有响应时间,吞吐量,并发数以及性能计数器。
响应时间:用户从发送请求到最后收到响应数据的时间。实践中由于记录和获取系统时间这个操作也需要时间,因此通常的做法是在一次测试中重复请求N次,然后除以N得到单次请求的时间。
并发数:系统同一时刻处理请求的最大数量。
吞吐量:系统单位时间内处理请求的数量,通常用TPS(每秒处理的事务数),QPS(每秒处理的查询数),HPS(每秒处理的HTTP请求数)作为指标。
性能计数器:服务器系统性能指标。
性能测试是一个总称,具体可以分为性能测试,负载测试,压力测试和稳定性测试(让系统在一定的业务压力下运行一段时间,以检验系统是否稳定)。
性能测试,负载测试和压力测试就是性能测试不同的阶段而已,下图是性能测试曲线和响应时间曲线:
可以看到,随着并发请求数量从无到有并且持续增加,系统的资源消耗逐渐增加并达到最大,响应时间也逐渐增加并达到最大。
a-b阶段是性能测试阶段,这个阶段的最大并发数需要满足系统设计初期的目标,这部分的响应时间也处于较低的水平。
b-c阶段是负载测试阶段,随着并发数的增大,系统的吞吐量(TPS)达到最大,在到达某个定点后开始变小,系统的响应时间也变化挺大。但总体来讲,系统是可用的。
c-d阶段是压力测试阶段,当系统的吞吐量到达最大之后,继续增加并发数反而会减小吞吞吐量以致导致系统崩溃。
我们把c点叫做最大负载点,d点叫系统的崩溃点。网站正常运行在a-b区域,偶尔运行在b-c区域。
网站的可用性通常用几个9来衡量,比如qq的可用性是4个9(即99.99%),那么qq一年之中不可用的时间大约是(1-99.99%)*365*24*60=53分钟。在网站建设中,可用性对外是服务承诺,对内是考核指标。
性能:网站对并发请求的处理能力,有很多衡量指标,比如QPS,响应时间等。
可用性:1-网站不能对外提供服务的概率,通常用几个9来衡量。
伸缩性:网站能否通过添加硬件资源来提高处理能力。
扩展性:网站能否在不改变原有架构的基础上添加新功能。
安全性:你懂的。
其中,伸缩性和扩展性经常被大家混淆。伸缩性是指网站能够通过添加硬件资源提升服务能力,是一种性能需求。扩展性是指网站能否很容易的添加新功能,是一种功能需求。
为了完成以上5个方面的提升,作者总结了9种手段,分别为:分层,分割,分布式,集群化,缓存,异步,冗余,自动化,安全。
分层:将系统在横向维度上切割成几个部分,通过上层对下层的调用组成一个完整的系统。
分割:将业务在纵向维度上切割成几个部分,即业务分割。
分布式:通过分层和分割,系统被划分成了一些独立的模块,将每个模块部署在一个独立的服务器上,通过远程调用机制让这些服务器配合工作,实现分布式。
集群化:随着业务的扩大,系统中的每个模块部署在一台服务器上已经不堪重负,此时将每个模块部署到一个独立的集群中,每个集群内部通过负载均衡协调工作。
缓存:缓存是改善软件性能的第一手段,在网站中,缓存除了可以提升性能,还可以缓解后端应用和数据服务器的压力。
异步:分布式系统中的各个模块之间通过异步的方式通信,可以提高系统的响应速度。
自动化:主要集中在发布运维方面。
安全:一些常用的提升安全性的手段。
其中,分布式和集群化经常被大家混淆。分布式是指将一个大的系统分成多个小的子系统,每个子系统部署到一个服务器上(比如博客http://yizhenn.iteye.com/blog/2299859中的1图到2图)。集群化是在N个服务器上部署N份子系统,这N个服务器提供的是相同的服务(比如博客http://yizhenn.iteye.com/blog/2299859中的3图到4图)。
作者还重点介绍了网站的性能测试和可用性度量。
网站的性能测试指标主要有响应时间,吞吐量,并发数以及性能计数器。
响应时间:用户从发送请求到最后收到响应数据的时间。实践中由于记录和获取系统时间这个操作也需要时间,因此通常的做法是在一次测试中重复请求N次,然后除以N得到单次请求的时间。
并发数:系统同一时刻处理请求的最大数量。
吞吐量:系统单位时间内处理请求的数量,通常用TPS(每秒处理的事务数),QPS(每秒处理的查询数),HPS(每秒处理的HTTP请求数)作为指标。
性能计数器:服务器系统性能指标。
性能测试是一个总称,具体可以分为性能测试,负载测试,压力测试和稳定性测试(让系统在一定的业务压力下运行一段时间,以检验系统是否稳定)。
性能测试,负载测试和压力测试就是性能测试不同的阶段而已,下图是性能测试曲线和响应时间曲线:
可以看到,随着并发请求数量从无到有并且持续增加,系统的资源消耗逐渐增加并达到最大,响应时间也逐渐增加并达到最大。
a-b阶段是性能测试阶段,这个阶段的最大并发数需要满足系统设计初期的目标,这部分的响应时间也处于较低的水平。
b-c阶段是负载测试阶段,随着并发数的增大,系统的吞吐量(TPS)达到最大,在到达某个定点后开始变小,系统的响应时间也变化挺大。但总体来讲,系统是可用的。
c-d阶段是压力测试阶段,当系统的吞吐量到达最大之后,继续增加并发数反而会减小吞吞吐量以致导致系统崩溃。
我们把c点叫做最大负载点,d点叫系统的崩溃点。网站正常运行在a-b区域,偶尔运行在b-c区域。
网站的可用性通常用几个9来衡量,比如qq的可用性是4个9(即99.99%),那么qq一年之中不可用的时间大约是(1-99.99%)*365*24*60=53分钟。在网站建设中,可用性对外是服务承诺,对内是考核指标。
0 0
- 大型网站架构要素及常用手段
- 大型网站核心架构要素
- 大型网站核心架构要素
- 大型网站【核心架构要素】
- 大型网站核心架构要素
- 大型网站核心架构要素
- 大型网站核心架构要素
- 大型网站核心架构要素
- 《大型网站技术架构》笔记:大型网站核心架构要素
- 大型网站架构要素之《性能》篇
- 3 大型网站核心架构要素
- 第三章 大型网站核心架构要素
- 10. 大型网站核心架构要素
- 笔记:大型网站的核心架构要素
- 说说大型网站架构的核心要素
- 网站技术架构三(大型网站核心架构要素)
- 大型网站技术架构(三)--架构核心要素
- 大型网站技术架构(三)--架构核心要素
- B+树在mysql数据库索引中的使用
- ArcGIS反距离权重法插值应用
- 业务对象的贫血模型与充血模型
- 大型网站架构演变
- redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
- 大型网站架构要素及常用手段
- C#笔记6——操作JSON(Newtonsoft)
- 大型网站架构之WEB前端优化
- 大型网站架构之应用服务器集群化
- robots规范写法与用途
- Android 实现滚动图片
- 大型网站架构之分布式缓存
- db_recovery_file_dest_size 100%used引发的web页面故障
- 优化WPF异常处理