• 三高架构分析


    三高架构分析

     张阳

    (石家庄铁道大学,河北省石家庄市,050043)

    摘要:随提到互联网设计。出现最多的词就是三高,三高就是高并发、高性能、高可用。他们是互联网系统架构设计永恒的主题。高并发需要考虑的指标,什么是高性能。性能测试的方法有哪些。高可用的定义。

    关键词:高并发 高性能 高可用

    一、高并发(High Concurrency)

    高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

    对于高并发来说,它的指标有:

    响应时间:系统对进来的请求反应的时间,比如你打开一个页面需要1秒,那么这1秒就是响应时间。

    吞吐量:吞吐量是指每秒能处理多少请求数量。秒查询率:秒查询率是指每秒响应请求数,和吞吐量差不多。

    并发用户数:同时承载正常使用系统功能的用户数量。

    二、高性能(High performance)

    高性能是指程序处理速度非常快,所占内存少,cpu占用率低。高性能的指标经常和高并发的指标紧密相关,想要提高性能,那么就要提高系统发并发能力,两者互相捆绑在一起。应用性能优化的时候,对于计算密集型和IO密集型还是有很大差别,需要分开来考虑。还有可以增加服务器的数量,内存,IO等参数提升系统的并发能力和性能,但不要浪费资源,要考虑硬件的使用率最高才能发挥到极致。

    优化网站性能的方法很多,从浏览器到数据库都可以对网站进行优化,比如:

    在浏览器端,可以通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能。

    还可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。

    在应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力。

    也可以通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户。

    在网站有很多用户高并发请求的情况下,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力,改善性能。

    在代码层面,也可以通过使用多线程、改善内存管理等手段优化性能。

    在数据库服务器端,索引、缓存、SQL优化等性能优化手段都已经比较成熟。而方兴未艾的 NoSQL数据库通过优化数据模型、存储结构、伸缩特性等手段在性能方面的优势也日趋明显。 

    下面将介绍一些性能测试的方法:

    性能测试是一个总称,具体可细分为性能测试、负载测试、压力测试、稳定性测试。

    1)性能测试

    以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。

    2)负载测试

    对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这时继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。

    3)压力测试

    超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。

    4)稳定性测试

    被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。在不同生产环境、不同时间点的请求压力是不均匀的,呈波浪特性,因此为了更好地模拟生产环境,稳定性测试也应不均匀地对系统施加压力。

    三、高可用(High Availability)

    系统高可用是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。高可用注意如果使用单机,一旦挂机将导致服务不可用,可以使用集群来代替单机,一台服务器挂了,还有其他后备服务器能够顶上。或者使用分布式部署项。比如现在redis的高可用的集群方案有: Redis单副本,Redis多副本(主从),Redis Sentinel(哨兵),Redis Cluster,Redis自研。

    一个典型的网站设计通常为如下图的基本分层架构模型:

    网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。

    对于应用服务器而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务,任何一台服务器宕机,只需把请求切换到其他服务器就可实现应用的高可用,但是一个前提条件是应用服务器上不能保存请求的会话信息。否则服务器宕机,会话丢失,即使将用户请求转发到其他服务器上也无法完成业务处理。 

    对于存储服务器,由于其上存储着数据,需要对数据进行实时备份,当服务器宕机时需要将数据访问转移到可用的服务器上,并进行数据恢复以保证继续有服务器宕机的时候数据依然可用。 

    除了运行环境,网站的高可用还需要软件开发过程的质量保证。通过预发布验证、自动化测试、自动化发布、灰度发布等手段,减少将故障引入线上环境的可能,避免故障范围扩大。 

    衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。

    四、结论

    在架构设计过程中。高并发、高性能,高可用是永远绕不过去的话题。

  • 相关阅读:
    变量的含义,内存管理机制,数据类型的含义
    操作系统、应用程序的含义,编程语言的优缺点
    Pycharm常用快捷键
    计算机组成及原理
    仿酷狗音乐播放器开发日志——整体框架分析
    仿酷狗音乐播放器开发日志——整体框架分析
    c++与java的优缺点
    c++与java的优缺点
    unicode ansi utf-8 unicode_big_endian编码的区别
    unicode ansi utf-8 unicode_big_endian编码的区别
  • 原文地址:https://www.cnblogs.com/zy2481912102/p/16292023.html
Copyright © 2020-2023  润新知