通常状况下,架构分两种来讨论的,一种是开发架构,一种是部署架构数据库
部署架构,就是开发完的程序在实际运行环境下,经过负载均衡,DNS轮询,SquID等等来减轻单台服务器负载,达到性能优化的目的设计模式
这里你们估计更想了解的是开发上的架构缓存
我的观点是,全部的架构都是死的,而Web高性能开发优化策略是活的,我在开发中,全部的东西都不是必定要按照什么固定的模式,去死开发,更多的是针对须要优化的信息进行针对处理,下面说说个人优化策略性能优化
一、数据库优化,这个是全部的优化策略中中重要的,能够说数据库设计的好坏,直接影响了一个系统的承受力。普通的数据库细节优化,网上已经有大笔文章了,没什么好说的,想了解的本身去找。而我要说的就是在数据库设计中的一个思路,分库、分表、缓存表。服务器
1)分库指的是在设计中,要考虑到后期数据量大的状况下,你的数据库可以随着应用随时拆分,这个拆分并非只是针对功能模块对应的数据拆分。举个例子,就 用这个CSDN论坛吧,好比里面有不少类,C#版,JAVA版,系统设计版等等,拆分的目的是能够把任何一个版的数据拆分到单独的一个数据库中去。架构
2)分表相对的就好理解了,就是说同类型的数据,你能够为了性能优化,进行拆分到多个表中去,拆分规则能够有多种,按照类型、按照时间、按照姓名等等。一样以这个CSDN论坛来讲,我要设计的话,我会按照里面的大版面进行数据库拆分,而按照小版,进行表拆分。负载均衡
3)而对于缓存表,网上我还不多看到有人来讲这个东西,这个的目的就是针对一个大的数据表中,通常中有死数据库和活动数据,好比用户表,里面有不少基本不 来的用户,那么针对这样的状况,当表数据上了千万的时候,我就会采用缓存表的模式来进行了,就是在实际表和用户之间在搭建一个临时表,访问用户数据时,首 先访问临时表,若是不存在,则进入实际表中获取,而后放入缓存表中,同时会经过后台线程,定时将缓存表数据同步到实际数据库中,同步时间能够针对系统要求 来进行。数据库设计
若是理解了上面的东西,那么在数据承载上,能够上升一个很大的层次。。。。。性能
二、程序优化。这个对我来讲相对的就不是那么的看中了,程序的优化,我更多的认为是个技巧,而不是架构了,包括如今常常见到的那些各类设计模式,另外这里提下,不少设计模式,他的出发点并非Web高性能开发,而是考虑的系统扩展性,因此在单个技术细节上,不少人也发现了,并不如直接的写代码来的快,可是就是推荐 那样,是由于采用了那些模式的程序,扩展性比你的强,那么一旦系统要求变更,或者是要求进行拆分的时候要比你方便的多,在分担到多个服务器上时,性能相对 的就起到了优化也。废话了通,继续说我对程序部分常常采用的方式吧优化
1) 首推静态化,这个的优化效果不用多说,直接减轻了服务器负担,不过若是用上了Squid,那么有第三放来作静态,也能够达到一样的效果
2) 合适的数据缓存,缓存不少人都用到了,可是在使用前,是否定真思考过为这个这个要进行Cache,Cache他的标准是什么?我说下个人标准:小数据量、 大访问量、更新尽可能少的数据,所有能够进行缓存。另外我提到的缓存,并不仅是说。NET自己提供的Cache,我说的缓存还包括了使用Static来进行 的数据
3) 活用线程,不少人的观念中感受线程好象在B/S中是用不到的,或者是没有必要。其实这个观念彻底错,在特定状况下使用线程,能够提升的局部性能不是一点两点
4) 功能模块拆分,这个通常人基本都在作,我要补充的是,不仅是在单个项目中进行功能模块的拆分,而是为了进行分步式开发而进行拆分在其它的基本都是细节优化。