`

性能是一个多方面综合的结果,遵循短板理论

 
阅读更多

性能是一个多方面综合的结果,遵循短板理论。系统中任何一个部分成为性能瓶颈,都会影响整个系统的性能表现 

 

对于WEB应用,首先第一步是响应HTTP请求,即使后端的性能再好,如果在这里出现瓶颈,整个系统的性能也会很差,类似于一个很大的水瓶,但是入水口很小。在这个环节,可以通过DNS分流,负载均衡等方式改善。另外,现在高性能的HTTP服务器(Nginx、node.js等)本身,由于采用了事件通知等设计方式,单个线程可以响应多个HTTP请求,减少了线程创建和切换的开销(CPU与内存),也可以显著提升响应HTTP请求的性能 

 

接受请求之后,则进入系统后端进行业务逻辑处理,在这里也会产生性能瓶颈。通过集群的方式,可以有效改善。因为单台服务器的硬件总是有限的,受限于CPU和内存,单台机器能够处理的负载终究是有限的,这时可以采用集群方案,将请求分摊到不同的服务器上处理。这对应用的实现本身是有要求的,基本上要求应用是“无状态”的。比如如果应用的业务逻辑依赖session,那么集群就无法简单地实现,还需要加入session同步的策略等。另外应用本身的代码也会有影响,比如在关键路径上使用了synchronized,那么就只能串行处理,对性能肯定有影响 

 

集群不等于分布式。当应用的规模大到一定程度,简单的集群也无法支撑,这时候往往还需要考虑分布式,对系统进行拆分,充分利用硬件的性能,达到最大的扩展性。此外,即使不考虑性能,将系统拆分,实现“服务化”,对于功能的扩展也是很有帮助的。比如说,只有单个系统时,用户管理可以和业务系统放在一起;但是当应用规模不断增大,有100个系统,那么把用户管理拆分出来,就可以在100个系统中实现这部分功能的共享 

 

最后到了持久层,这里往往会涉及到大量的IO读写,这是最容易产生性能瓶颈的地方。传统的RDBMS本质上是一个单机系统,并且需要遵循ACID的约束。所以传统的关系数据库的扩展性是很差的。比如说,我们用到了数据库集群,这可以解决服务可用性的问题(主备倒换),容灾的问题(数据冗余),对性能也有一定的帮助(同时响应更多的数据库连接请求)。但是仅仅这样还不够,因为前面说过RDBMS本质上是单机系统,即使用了集群亦然。什么意思呢?集群仅仅解决了多连接并发的问题,但是数据库本身插入、查询,涉及到大量的IO,就已经成为了瓶颈,尤其在数据量很大的情况就更加明显。所以仅仅是集群还不够,这时候就需要分表(水平拆分),这对系统的代码就有要求,什么样的数据,要到哪个表里查询,都需要遵循一定的规则。有一个办法是,将数据库路由的功能放在JDBC之下,数据库之上,这样应用就只需要连接到这个数据库路由层,不用关心表的实际位置。随着数据库复杂度的上升,本来很好用的ORM,也就越来越捉襟见肘了 

 

数据规模越来越大,遇到即使拆表也无法解决问题的时候,就需要考虑RDBMS之外的方案。比如键值数据库(Redis、Tair)、文档数据库(MongoDB)等NOSQL技术,甚至还有文件系统(GFS、TFS),当然缓存也是很常见的重要方案 

 

总的来说,性能是一个很大的话题。为了实现高性能,系统的架构是随着业务的发展,逐步演化的,从一开始就设计一个大规模的架构,绝非明智之举。“先实现功能,再按需优化”,才是比较好的策略。在这个过程中,既需要前瞻的眼光,也需要推倒重来的勇气 

 

如同DOTA的路人和CW是2个不同的游戏一样;同样的应用,在小规模场景,和大规模场景(高并发、海量数据)下,也是完全不同的两回事,为了实现同样的功能,架构和实现上可能是千差万别的

分享到:
评论

相关推荐

    PCB制板案例

    在电子设计领域,PCB(Printed Circuit Board)制板是一项至关重要的...掌握好PCB制板的每一个环节,不仅能够优化电路性能,还能降低制造成本,提升产品的竞争力。对于电子工程师来说,精通PCB设计是必不可少的技能。

    用标准数字芯片实现数字系统时的安装与调测.docx

    综上所述,数字系统的设计与实现是一个复杂的工程,涉及到从理论到实践的多方面技能。安装与调测是其中关键的环节,需要设计者在实践中不断积累经验,提高技术水平。通过严格的功能检测、精心的安装与布线、细致的...

    高速印制电路板的设计及布线要点

    高速印制电路板设计是一门综合艺术,涉及到信号完整性、电源完整性、电磁兼容性等多个方面。设计师需要对材料特性、制造工艺和电子理论有深入理解,才能创建出高性能、高可靠的电路板。通过以上布线要点的详细讨论,...

    电子线路板制作详解【清华大学】

    总的来说,电子线路板制作是一项综合了理论与实践的技术,需要理解电路原理,掌握设计工具,了解材料特性,以及熟悉制造和测试流程。通过系统学习清华大学的教程,可以有效提升电子工程师的专业能力,为实际项目开发...

    通信工程施工与监理(模板范本).ppt

    综合来看,通信工程施工与监理是一个多方面技术和管理并重的领域,涉及从光缆类型的选择到施工的每一个步骤。这就要求施工单位和监理单位具备精确的规划能力和严格的执行力,从技术和管理两方面确保通信网络的安全、...

    an136f.pdf

    PCB布线是一个涉及多方面因素和权衡的复杂过程,必须综合考虑各种设计因素,如板层堆叠、布线策略、元件布局和信号完整性等。合理的布局可以减少信号的串扰,电磁干扰(EMI),以及热问题,从而确保开关电源的稳定...

    PCB电磁兼容设计和顺利通过测试的方法和理论

    在电子和电气产品的开发过程中,PCB(Printed Circuit Board)电磁兼容(EMC)设计是至关重要的一个环节。电磁兼容性是指设备或系统在其电磁环境中能正常工作,同时不会对其环境中的任何设备产生不可接受的电磁干扰...

    PCB电路板设计典型操作技巧HWH

    在电子设计领域,PCB...总之,PCB电路板设计涉及多个方面,需要综合运用电路理论、电磁学、机械结构知识。通过掌握上述技巧,结合不断的实践,你将在PCB设计领域不断进步,为电子产品的性能和可靠性提供坚实保障。

    电子政务-用于测试薄层绝缘材料抗电强度的测试装置.zip

    陶瓷材料则以耐高温性能出色而著称,但其脆性可能成为应用的短板。此外,玻璃纤维等材料也有着独特的电气性能和应用领域。 电场理论的应用,是测试装置能够有效工作的关键。为了准确地模拟绝缘材料在实际工作环境中...

    钢筋混凝土梁板结构.doc

    **现浇整体式楼盖**是最传统的施工方法,它在施工现场一次性完成板、梁的浇筑工作,形成一个整体结构。这种楼盖的刚度大、整体性好,尤其在抗震方面有卓越的表现,但模板的使用量大、施工周期较长,对施工技术和现场...

    可靠性设计论文论文设计

    设计者需要在设备选型、网络架构规划和布线实施等方面下足功夫,以构建一个能够应对各种挑战,确保业务连续性的网络系统。随着技术的不断进步,未来的网络可靠性设计将更加注重整体优化,以实现更高的可用性和更低的...

    2021级混凝土原理试卷B.docx

    在混凝土结构设计方面,设计工程师需综合考虑受弯、受扭、受压等多方面的因素。以素混凝土梁为例,其抗弯承载力主要取决于混凝土自身的抗压强度,同时梁内受力钢筋的布置对控制裂缝和提升受弯性能具有决定性作用。...

    大电流PCB设计避坑指南

    总而言之,设计大电流PCB是一个复杂但有序的过程,它要求工程师具备深厚的理论知识、丰富的实践经验以及对材料特性的充分了解。通过合理选择材料、优化电路布局、加强散热设计以及综合考虑机械强度和热应变,工程师...

    手机LAYOUT8层板

    总结,手机LAYOUT8层板设计是一项综合性的技术工作,涉及到电路理论、信号完整性、电磁兼容性等多个方面。通过理解MTK方案和熟练运用LAYOUT工具,可以创建出符合性能要求、兼顾成本和工艺的优秀手机主板设计。

    pcb电磁兼容设计[参照].pdf

    总的来说,PCB的电磁兼容设计涉及多方面的考量,包括元件的物理位置、布线策略和整体电路布局。优秀的PCB设计不仅能够提高电路性能,还能降低制造成本,确保电子设备在复杂环境下的稳定运行。设计师需要综合运用理论...

    参考资料-PCB培训教材1.zip

    总结,PCB设计是一个综合性的工程,涉及到电路、材料、工艺等多个方面。熟练掌握PCB设计原理和技巧,能有效提升电子产品的性能和可靠性。通过学习“参考资料-PCB培训教材1”,我们可以系统地了解PCB设计的各个环节,...

    STM32C8T6-PCB.zip

    STM32C8T6是意法半导体(STMicroelectronics)公司推出的基于ARM Cortex-M0...总之,STM32C8T6核心板PCB设计涉及硬件电路、电磁兼容性、电源管理等多个领域,需要综合运用理论知识和实践经验,确保设计的可靠性和性能。

    资料-PCB技巧资料.zip

    总结,PCB设计是一门综合性的技术,涵盖多个领域。从基础理论学习到实践经验积累,都需要不断探索和提升。这份"资料-PCB技巧资料.pdf"文档将为学习者提供宝贵的指导,帮助他们在PCB设计的道路上更进一步。

    2016注册监理工程师继续教育市政公用工程专业24学时考试题及答案80分解析.doc

    【知识点解析】 1. 建设工程监理与相关...以上内容涵盖了工程的多个方面,包括环境保护、施工工艺、工程管理、质量控制、安全规定和技术标准等,这些都是注册监理工程师在市政公用工程专业中需要掌握和应用的知识点。

Global site tag (gtag.js) - Google Analytics