`

性能需求驱动下架构的改变

阅读更多

产品的发展需要架构的稳定,但是从一个小用户量的软件逐步发展到动辄数千万注册用户的大型互联网应用,没有人会忽视性能需求(或者隐性的性能需求)在其中起了多大的作用。且看一些这方面的分类归纳,从易入繁:

 

1、集群组网:

这是最基本的横向扩展的方式,把单节点的压力通过负载均衡分担到多个节点下,提高了系统负载能力的同时,亦提高了稳定性。

 

2、反向代理:

一个大型的互联网网站不能不引入反向代理对静态资源的处理,Servlet容器用来处理静态图像和文本是非常奢侈的,Apache、Nginx、Squid都是优秀的解决方案。

 

3、页面静态化:

互联网应用“缓存为王”,这可能是数种方案中能带来惠利最明显的一种,通过静态页面的生成和访问,有效地降低了系统负载。Web2.0的应用缓存命中率通常要稍差。

 

4、折腾数据库:

用户的访问难以满足了,数据库硬件设备的强化以外,从最基本的拆表、SQL调优,到纵向和横向的分库几乎成为必不可少的解决办法,或者更换廉价存储解决方案,使用NoSQL数据库等等。

 

5、CDN:

CDN指的是内容分发网络,通过网络的广域层面对用户需求的分担,避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,提高用户体验。

 

6、分布式存储:

海量信息的爆炸,需要廉价存储的解决方案,Web2.0的数据尤甚。分布式存储系统可以保证大吞吐量的数据读写和海量数据存储,实时性就显得不那么重要了。

 

7、数据缓存:

这里的数据缓存和页面缓存区分开,数据缓存通常包括持久层层面的缓存和外部接口调用的缓存,数据缓存可以减小各类I/O调用,增加用户响应的平均时间。

 

8、功能性集群:

初步的集群是对等的,这类集群方式简单可控;但是随着产品日益复杂化,用户访问压力日益增大,单纯的对等集群解决不了所有的问题,且产生大量冗余处理逻辑,使用功能性集群可以将完成不同功能的节点规约在一起。

 

9、页面分区:

对一个大型网站,这是必不可少的。目的就是要进行页面静态化,并将动态和静态的区域分离开,以便在用户访问的时候,只做简单的聚合操作。

 

10、页面片段的生成和页面的聚合相剥离:

许多频繁访问的相对静态的页面片段通常只需要的定时或事件触发的情况下才生成一次,甚至可以放在系统压力较轻的夜间生成。用户每次请求时只需要将静态的页面片段聚合成一个完整的页面(亦需要添加上动态的部分)即可。

 

11、隔离:

对复杂系统的隔离和备份主要是为了解决稳定性问题,保持每一个单元的“简单”,化整为零,更容易将单元独立开发、产品化。

 

12、聚合方式的改进:

引入高性能的服务端页面聚合方式(经过验证,常规SSI、ESI的性能存在缺陷);甚至客户端聚合:将展示模板送到客户端,再通过Ajax请求将JSON(或其它简单格式)数据流送到客户端,在客户端使用Ajax聚合出最终的页面来,好处在于将服务端的压力分担到客户端。

 

13、组件服务化:

服务化的好处在于易于将组件的处理并行化,增加整体的响应速度。模式可以遵循SOA的方式,系统中使用高性能的ESB来进行服务编排和任务分派。

 

以上仅仅是性能需求驱动下架构演进的几个小小的例子,这样的例子还有很多,而且充满智慧的魅力,详细的内容后面慢慢和大家分享,且待分解。

文章系本人原创,转载请注明作者和出处

2
2
分享到:
评论

相关推荐

    藏经阁-技术驱动和应用驱动的计算架构创新.pdf

    技术驱动和应用驱动的计算架构创新将会继续推动计算架构的发展,而摩尔定律的放缓和新兴技术的出现也将会继续改变计算架构的发展方向。 技术驱动和应用驱动的计算架构创新是未来 15 年发展方向的关键因素。计算架构...

    Linux电源管理系统架构和驱动

    通过上述分析,我们可以看到Linux电源管理系统不仅覆盖了从整体架构设计到具体驱动实现的方方面面,而且在每个层次上都提供了灵活且强大的工具和接口,以满足各种硬件平台的需求。这对于提高系统的能效、延长电池...

    云技术驱动的架构演进与变迁.pptx

    在本文中,我们将深入探讨云技术如何驱动架构从组件化、系统化到微服务化的转变,并分析其中的关键技术和解决方案。 首先,云技术的发展经历了几个关键阶段。OpenStack作为一个开源的基础设施即服务(IaaS)平台,...

    软件架构模式

    软件架构模式主要包括分层架构、事件驱动架构、微内核架构、微服务架构和基于空间的架构等。 分层架构是一种非常常见的架构模式,它将软件系统分割为多个不同的层次,每个层次负责系统的一部分功能。分层架构有助于...

    软件架构师教程

    3. 架构风格:探讨不同的架构风格,如面向服务架构(SOA)、事件驱动架构(EDA)等。 二、架构设计原则 1. 单一职责原则:每个组件应有单一功能,避免耦合。 2. 开闭原则:对扩展开放,对修改关闭,实现灵活的设计...

    高级系统架构师培训文档

    有效的架构设计需要深入理解业务需求、技术趋势和质量属性,通过迭代优化和持续改进,构建既符合当前需求又具有未来扩展潜力的系统架构。架构师的角色不仅是技术专家,更是业务顾问,他们需要在技术和业务之间架起...

    流Mini驱动开发指南

    1. **类驱动架构理解**:深入理解选定类驱动的工作原理和架构设计,这是开发流Mini驱动的前提。 2. **接口函数的使用**:熟悉并正确使用类驱动提供的接口函数,以便于Mini驱动与之交互。 3. **错误处理机制**:设计...

    中科院软件架构讲义

    - **以测试驱动架构设计**,在设计阶段就考虑测试需求。 3. **可靠性质量解决方案**: - **可靠性质量属性场景**,定义在哪些场景下需要特别关注可靠性。 - **健康监测机制**,实时监控系统状态以预防故障。 - ...

    软件系统架构分析师

    - **架构恢复**:当现有架构无法满足新的需求或性能要求时,可能需要进行架构恢复工作,包括反向工程、正向工程等。 - **设计重构**:在架构恢复过程中,可能会涉及到对现有设计的重构,以适应新的需求变化。 #### ...

    软件架构 (software architecture)

    软件架构的决策包括选择合适的架构风格,如微服务架构、事件驱动架构、三层架构等,以及定义组件间的交互方式,如同步、异步通信等。此外,软件架构还需要考虑系统的可扩展性,通过模块化设计和接口设计,使系统能够...

    敏捷开发方法、敏捷中的软件架构

    **针对需求设计架构**:在设计架构之前,首先要深入了解业务需求和用户需求,确保架构能够满足这些需求。 - **从需求到架构**:需求分析是架构设计的基础,通过对需求的深入理解,可以更好地规划系统的结构和功能。...

    架构设计师与SOA

    2. **职责**:架构设计师负责设计端到端的服务交互,调研和定义非功能需求,如性能、安全和管理。他们还必须理解业务需求,确保架构支持未来的业务发展。 在SOA架构设计中,架构师不仅要关注服务的实现,还要考虑...

    架构这点事.zip

    开放封闭原则(OCP)则强调,软件实体应对扩展开放,对修改关闭,这意味着在不改变原有代码的情况下,可以通过添加新代码来实现功能扩展。 除此之外,还有其他一些架构模式和原则,如分层架构、微服务架构、事件...

    软件架构模式.docx

    - **事件驱动架构**:提供高度的灵活性和可扩展性,但可能增加系统复杂性,需要处理异步通信的挑战,并确保组件间的解耦。 选择架构模式时,应考虑业务需求、性能目标、团队技能以及未来的可维护性。理解各种模式的...

    2815最新采集卡驱动+软件

    通常,大版本号的变更会带来显著的功能增加或架构改变,而小版本号的更新则更多地涉及错误修复和性能优化。 在实际使用中,用户需要首先确认自己的操作系统是否兼容2815采集卡的驱动程序,然后按照安装指南进行驱动...

    详解大数据时代下的三种存储架构.docx

    大数据时代下的三种存储架构 在大数据时代,数据的价值日益凸显,数据已经成为不可或...大数据时代下的三种存储架构各有其特点和优势,但都需要根据不同的应用场景和需求,选择合适的存储架构,满足大数据应用的需求。

    厦大软件架构习题

    架构模式是一种解决特定问题的通用解决方案,如微服务架构、事件驱动架构等。而架构风格则是一类系统共有的结构和约束,例如管道-过滤器风格常用于数据处理系统,客户-服务器风格在分布式系统中广泛应用。 三、架构...

    驱动代码电机控制

    10. **软件框架**:现代电机驱动系统可能采用层次化或模块化的软件架构,如CAN通信协议、EtherCAT、Modbus等工业通讯协议,用于与其他设备交互。理解这些框架可以帮助开发者更好地组织和管理驱动代码。 综上所述,...

    步进电机驱动源码

    驱动程序需要实现这些模式下的步进序列,以改变电机的旋转方向和速度。 3. **运动控制**:这部分代码负责接收用户输入,如正转、反转、加速、减速和停止命令,并将这些指令转换为相应的脉冲序列。例如,加速可能...

Global site tag (gtag.js) - Google Analytics