`

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

阅读更多

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

 

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
分享到:
评论

相关推荐

    软件架构模式-事件驱动不错哦

    没有进行架构设计的应用程序通常是紧耦合的、玻璃心,难以改变。没有头绪。如果不理解应用的各个组件的内部工作方式的话很难看清它的架构特征。关于部署和维护的问题都很难回答:架构的规模如何?程序的性能如何?...

    双桨驱动水面无人艇运动控制系统研究与实现.docx

    控制手柄具有改变无人艇工作模式,性能参数的功能;上位机软件的控制界面能够看到无人艇当前的工作状态、位置、环境、运动参数等信息;艇载控制中心能够实现无人艇远程遥控、自主巡航等功能。 在通讯方面无人艇通过...

    城市大脑驱动的新型智慧城市解决方案 PPT.pdf

    在满足上述需求的同时云计算数据中心具备传统数据中心、单应用系统建设无法比拟的优势、随需应变的动态伸缩能力以及极高的性能投资比。 移动互联网正逐渐渗透到人们生活的各个领域,作为最便捷、最时尚、最值得信赖...

    iTOP-4412开发板之精英版使用手册_V2.4

    从架构上来讲,多核系统比单核要复杂很多,性能也成倍增长,但掌握它真的很难吗? 实际上,从嵌入式系统开发的角度来看,所谓的‘四核’其实并没有多少改变,留给我 们开发人员的工作跟以前也没有多少差别,因为 ...

    双核补丁智能安装包 V4.5 Build 071101

    在普通的Windows XP(SP2)操作系统中,基于需求切换,系统会根据负载改变ACPI处理器的性能状态,比如处理器电压、工作频率等。Windows XP的处理器功耗管理会在对应的处理器上采用这样的操作,但是在双核(多核)...

    asp.net知识库

    Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using sqlite with .NET Visual Studio 2005 中的新 DataSet ...

    理解大数据-实践大数据.pptx

    1、大数据比云计算更为落地 商业模式驱动 应用需求驱动 云计算本身也是大数据的一种业务模式 理解大数据-实践大数据全文共48页,当前为第9页。 2、大数据不仅仅是"大" 多大? PB 级 比大更重要的是数据的复杂性,...

    理解大数据-实践大数据(1).pptx

    1、大数据比云计算更为落地 商业模式驱动 应用需求驱动 云计算本身也是大数据的一种业务模式 理解大数据-实践大数据(1)全文共46页,当前为第8页。 2、大数据不仅仅是"大" 多大? PB 级 比大更重要的是数据的复杂性...

    软件工程知识点

    需求分析要求以用户需求为基本依据,从功能、性能、数据、操作等多个方面,对软件系统给出完整、准确、具体的描述,用于确定软件规格。其结果将以“软件需求规格说明书”的形式提交。 在软件项目进行过程中,需求...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际需求,选择合适的开发工具及软件架构。 blog对系统的可靠性、稳定性有比较高的要求。本系统设计时,比较主流的B/S设计有基于JSP、...

    Qualcomm平台BREW开发技术文档

     性能优化的需求 103  显示过程的优化 103  资源载入的优化 103 开发注意事项 104  如何在模拟上调试唤醒挂起 104  如何让系统不进入休眠状态 104  获取当前系统的背光值 104  取消背光 104  图示 ...

    QUALCOMM平台BUIW开发文档

     性能优化的需求 103  显示过程的优化 103  资源载入的优化 103 开发注意事项 104  如何在模拟上调试唤醒挂起 104  如何让系统不进入休眠状态 104  获取当前系统的背光值 104  取消背光 104  图示 ...

    windows 程序设计

    Windows API和它的语法的最大变化来自于从16位架构向32位架构转化的过程中。Windows从版本1.0到版本3.1使用16位Intel 8086、8088、和286微处理器上所谓的分段内存模式,由于兼容性的原因,从386开始的32位Intel微...

    数据中心(Data Center)供电解决方案分享-电路方案

    在现行电路中,绝大多数的负载工作在12V 以下的电压下, 如硬盘马达驱动为12V,SSD为5V/3.3V,DDR工作在1.2V, CPU的核电压1.8V等。转换系统所面临的挑战都是有关高效而可靠的产生低压/大电流。HVDC也能满足这一条件...

    C#微软培训资料

    <<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 ... 比尔....这一天 微软公司正式推出了其下一代...

    链接器和加载器.PDF(链接器和加载器 Beta 2)

    内容简介 《链接器和加载器》讲述构建程序的关键...同时,像IA64那样具有宽指令字和编译时访存调度特性的先进处理器架构,也需要将一些新的特性加入到链接器中,以确保在被链接的程序中可以满足代码的这些复杂需求。

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    8.5.4 例2:从下一行中返回一个值 204 8.6 First_value和Last_value 205 8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11...

Global site tag (gtag.js) - Google Analytics