`
臻是二哥
  • 浏览: 188430 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论

大型网站架构要素及常用手段

阅读更多
“一般来说,设计网站的架构。除了关注功能需求以外,还需要关注性能,可用性,伸缩性,扩展性,安全性。

性能:网站对并发请求的处理能力,有很多衡量指标,比如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分钟。在网站建设中,可用性对外是服务承诺,对内是考核指标。
  • 大小: 32.3 KB
  • 大小: 33.7 KB
0
2
分享到:
评论

相关推荐

    大型网站系统架构演化之路.pdf

    大型网站系统架构演化之路的知识点主要包括以下几个方面: ...以上知识点涵盖了大型网站架构演化的核心要素,从基础架构到高级优化策略,每一步都至关重要,共同构成了大型网站系统架构的完整演化之路。

    系统架构方法论

    系统架构方法论是一种重要的指导思想和技术手段,它用于规划、设计、实现以及管理信息系统或软件系统的结构、行为和关系。良好的系统架构不仅能够确保系统的稳定性、可扩展性和可维护性,还能有效地支持业务需求的...

    京东应用架构设计

    本文将深入探讨京东应用架构的关键要素,包括分层架构、微服务化、分布式系统、缓存策略、数据库优化等多个方面。 一、分层架构 京东应用架构采用经典的分层设计,通常包括表现层(前端)、业务逻辑层(后端服务)...

    高级Java架构师培训 148节视频课-资料齐全

    - **微服务架构**:微服务架构强调将一个大型应用分解成多个小型服务,每个服务负责单一业务功能,并通过轻量级通信协议进行交互。理解微服务的设计理念及其带来的挑战(如服务治理、数据一致性、分布式事务等)是...

    电子商务案例分析-第3章-电子商务网站建设.ppt

    总结来说,构建一个成功的电子商务网站需要综合考虑物理架构、结构设计、用户体验、商品管理和订单处理等多个要素。合理的架构能保证网站的稳定性和扩展性,而良好的用户体系和业务流程则直接影响到用户体验和销售...

    大型系统的性能测试与分析

    ### 大型系统的性能测试与分析 #### 一、引言 随着信息技术的快速发展,企业和组织对于信息系统的要求越来越高,特别是对于那些需要处理大量并发请求、高频交易的应用系统来说,其性能好坏直接影响到用户体验和...

    一种大型带状数字地形模型数据结构.pdf

    总结来说,这篇文章通过提出一种结合栅格和矢量数据结构的新方法,解决了大型带状数字地形模型数据存储和处理的效率问题,为铁路选线设计提供了更为高效的技术手段。文章的研究成果不仅推动了相关技术的发展,还为...

    seo教程-SEO入门到提高全攻略-九头鸟经典班实战教程之一

    - **起源与发展:** SEO起源于20世纪90年代,最初是Yahoo这样的公司为了提升自己网站的可见性而采取的一些优化手段。随着互联网的发展,企业开始意识到搜索引擎的重要性,并逐渐形成了一套系统化的SEO理论和技术。 ...

    信息系统项目管理师考试大纲及培训指南.pdf

    - **软件构件技术**:构件的概念、重要性及常用标准。 - **软件体系结构**:定义、典型架构、设计方法、分析与评估技术。 - **面向对象系统分析与设计**:基本概念、统一建模语言UML的应用、可视化建模技术等。 ...

    系统集成项目管理工程师

    - **国家信息化体系要素**:包括信息资源、信息网络、信息技术和产业、信息化人才、政策法规和标准规范、信息安全保障等六大要素。 - **国家信息化指导思想、战略方针、战略目标**:国家信息化的指导思想强调...

    信息安全_数据安全_A Knack for NAC:Locking Down Network A.pdf

    信息安全和数据安全是现代企业运营中的核心要素,尤其是在全球化的大型企业中。为了维护企业网络的安全,访问控制成为了不可或缺的环节,而网络访问控制(NAC)技术则是实现这一目标的关键手段。本文将详细探讨NAC的...

    58同城推荐系统设计与实现

    在互联网信息时代,推荐系统的设计与实现是提升用户体验和增强平台粘性的重要技术手段。58同城作为一个大型的生活信息服务平台,涉及到招聘、房产、二手交易等多种业务线,其推荐系统的设计尤为重要。针对58同城推荐...

    UML图的基本种类

    这是实现大型系统的重要手段。 #### 四、UML图的应用场景 - **需求分析阶段**:在这个阶段,用例图是最常用的UML图,用于捕获系统的功能需求。 - **设计阶段**:类图、序列图、活动图和状态机图是这一阶段的关键,...

    软件测试基本理论参考.pdf

    软件测试是确保软件质量的关键环节,它涉及到对程序和文档的全面验证,以确保它们满足用户的需求和期望。...最后,黑盒测试技术包括等价类划分、边界值分析等方法,这些都是测试工程师在实践中常用的技术手段。

    程序学习课本

    书中也强调了“大型企业现在和未来需要什么样的人才”,这提示读者要对行业趋势保持敏感,理解企业对于Java开发者的技能要求,比如对于Spring框架、Hibernate、MyBatis等企业级开发框架的熟悉度,以及对于J2EE平台的...

    快消品专业名词可用.pdf

    在快消品行业中,了解和掌握专业术语是至关重要的,这些术语涵盖了市场策略、销售渠道、促销活动以及组织架构等多个方面。下面将详细解释其中的一些关键概念: 1. SKU(Stock Keeping Unit):这是库存管理的基本...

    地理信息系统实习教程(基于MapGIS K9)

    MapGIS K9采用了多层次架构设计,主要包括客户端、服务器端以及数据存储层。这种设计使得系统具有良好的扩展性和灵活性,便于进行二次开发和定制化服务。 - **客户端**:提供用户界面,支持各种GIS操作。 - **...

Global site tag (gtag.js) - Google Analytics