一般情况下,架构分两种来讨论的,一种是开发架构,一种是部署架构
部署架构,就是开发完的程序在实际运行环境下,通过负载均衡,DNS轮询,SquID等等来减轻单台服务器负载,达到性能优化的目的
这里大家估计更想了解的是开发上的架构
我对这个的观点是,所有的架构都是死的,而Web高性能开发优化策略是活的,我在开发中,所有的东西都不是一定要按照什么固定的模式,去死开发,更多的是针对需要优化的信息进行针对处理,下面说说我的优化策略
1、数据库优化,这个是所有的优化策略中中重要的,可以说数据库设计的好坏,直接影响了一个系统的承受力。普通的数据库细节优化,网上已经有大笔文章了,没什么好说的,想了解的自己去找。而我要说的就是在数据库设计中的一个思路,分库、分表、缓存表。
1)分库指的是在设计中,要考虑到后期数据量大的情况下,你的数据库能够随着应用随时拆分,这个拆分并不是只是针对功能模块对应的数据拆分。举个例子,就用这个CSDN论坛吧,比如里面有很多类,C#版,JAVA版,系统设计版等等,拆分的目的是可以把任何一个版的数据拆分到单独的一个数据库中去。
2)分表相对的就好理解了,就是说同类型的数据,你可以为了性能优化,进行拆分到多个表中去,拆分规则可以有多种,按照类型、按照时间、按照姓名等等。同样以这个CSDN论坛来说,我要设计的话,我会按照里面的大版面进行数据库拆分,而按照小版,进行表拆分。
3)而对于缓存表,网上我还很少看到有人来说这个东西,这个的目的就是针对一个大的数据表中,一般中有死数据库和活动数据,比如用户表,里面有很多基本不来的用户,那么针对这样的情况,当表数据上了千万的时候,我就会采用缓存表的模式来进行了,就是在实际表和用户之间在搭建一个临时表,访问用户数据时,首先访问临时表,如果不存在,则进入实际表中获取,然后放入缓存表中,同时会通过后台线程,定时将缓存表数据同步到实际数据库中,同步时间可以针对系统要求来进行。
如果理解了上面的东西,那么在数据承载上,可以上升一个很大的层次。。。。。
2、程序优化。这个对我来说相对的就不是那么的看中了,程序的优化,我更多的认为是个技巧,而不是架构了,包括现在经常见到的那些各种设计模式,另外这里提下,很多设计模式,他的出发点并不是Web高性能开发,而是考虑的系统扩展性,所以在单个技术细节上,很多人也发现了,并不如直接的写代码来的快,但是就是推荐那样,是因为采用了那些模式的程序,扩展性比你的强,那么一旦系统要求变动,或者是要求进行拆分的时候要比你方便的多,在分担到多个服务器上时,性能相对的就起到了优化也。废话了通,继续说我对程序部分经常采用的方式吧
1)首推静态化,这个的优化效果不用多说,直接减轻了服务器负担,不过如果用上了Squid,那么有第三放来做静态,也可以达到同样的效果
2)合适的数据缓存,缓存很多人都用到了,但是在使用前,是否认真思考过为这个这个要进行Cache,Cache他的标准是什么?我说下我的标准:小数据量、大访问量、更新尽量少的数据,全部可以进行缓存。另外我提到的缓存,并不只是说。NET本身提供的Cache,我说的缓存还包括了使用 Static来进行的数据
3)活用线程,很多人的观念中感觉线程好象在B/S中是用不到的,或者是没有必要。其实这个观念完全错,在特定情况下使用线程,可以提高的局部性能不是一点两点
4)功能模块拆分,这个一般人基本都在做,我要补充的是,不只是在单个项目中进行功能模块的拆分,而是为了进行分步式开发而进行拆分
在其它的基本都是细节优化了,这个没有太多兴趣写了,网上资料应该不少,可以自己搜索查阅
上面的这几部分如果能在开发中,灵活运用上,可以说,你实现Web高性能开发,绝对不是难事。
我曾经开发的过的站点中,也有过社区,一个WEB服务器,一个DB服务器,主题帖千万,回复帖有6000W左右吧,其它数据不算,运行过程中没出过任何问题,日访问在100WPV情况下,还没有达到性能瓶颈。
分享到:
相关推荐
【Web高性能开发】的实践与优化策略主要集中在两个核心领域:数据库优化和程序优化。这两种优化方式对于提升网站性能和承载能力至关重要。 首先,我们来看看【数据库优化】: 1. **分库分表**:数据库设计是性能...
标题和描述概述的是“高并发高负载Web应用系统架构中的数据库架构策略”,这涉及到了数据库在Web应用系统中如何应对大规模用户访问、处理大量数据时的性能和...合理规划数据库架构,是构建高性能Web应用的关键所在。
【高性能Web架构之缓存体系】是针对提升Web服务性能的关键技术进行深入探讨的主题,主要涵盖了缓存的多个层面,包括Buffer与Cache的区别、DNS与浏览器缓存、CDN与反向代理缓存、Web服务器与分布式缓存、数据库与操作...
### 实战Nginx:取代Apache的高性能Web服务器 #### Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发。自2004年公开发布以来,...
### 实战Nginx:取代Apache的高性能Web服务器 #### Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发。自2004年公开发布以来,...
在深入分析大型WEB网站架构的过程中,我们通常会从多个维度来探讨其性能优化和系统设计。首先,HTML静态化是提高大型网站访问效率的一种简单有效手段。在网站设计中,将频繁访问但更新较少的页面生成静态HTML文件,...
### WEB2.0高并发高流量网站架构分析 #### 一、硬架构 **1. 机房的选择** 在选择机房时,需考虑的主要因素是目标用户群体的地理位置分布。例如,如果用户主要分布在南方,则可以选择电信机房;若用户主要位于北方...
标题和描述均聚焦于“基于WebServices的J2EE和_NET架构比较”,这明确指出了本文的核心议题,即探讨在WebServices环境下,J2EE(Java2EnterpriseEdition)与.NET两个平台之间的差异与优劣。文章由国防科技大学计算机...
### 构建高性能web站点——关键知识点解析 ...综上所述,构建高性能web站点需要从多个角度出发进行全面优化。通过对上述各个方面的细致考虑和实施,可以显著提高web站点的整体性能,从而提升用户体验。
### SSH Web开发架构分析和实现 #### 摘要与背景 随着互联网技术的迅猛发展,Web应用程序的需求日益增加,同时也面临着诸多挑战。为了解决这些问题,开发人员常常需要借助于成熟的技术框架来构建高效、稳定的Web...
### 构建高性能的J2EE分布式Web应用系统 #### 摘要 随着互联网技术的飞速发展,用户对Web应用系统的要求越来越高,尤其是在性能方面。为了满足日益增长的需求,开发人员必须掌握一系列优化技术和策略。本文将详细...
构建高性能Web应用的关键之一便是数据库的高效读写分离。本篇实战文档重点讨论了MySQL数据库的读写分离实现,涉及到的技术包括主从复制、代理中间件以及相关配置。 首先,MySQL的主从复制是实现读写分离的基础。...
总的来说,开发高性能的ASP.NET应用需要从多个方面综合考虑,包括但不限于合理的架构设计、高效的数据处理策略、恰当的状态管理和缓存使用等。通过实施上述最佳实践并结合持续的性能测试,可以显著提高ASP.NET应用的...
《Android高性能实践》是一份由正点闹钟技术总监冯斌撰写的文档,旨在分享他在Android应用开发中的优化经验和技巧。这份文档不仅适用于那些希望提升应用性能的开发者,也适合对Android平台感兴趣的技术人员阅读。...
对比测试用于比较不同版本、数据量或架构下的性能差异。稳定性测试则是在长时间高压力下运行,确保系统能满足24x7的服务需求。 在实现性能测试时,常用工具有JMeter,它可以创建多线程脚本,模拟用户行为并分析响应...
在构建高性能的Web服务器时,Linux、Nginx、MySQL和PHP(LNMP)的组合是一种常见的选择。这种架构能够提供高效、稳定且可扩展的服务,尤其适合处理高流量的PHP应用。以下是对标题和描述中涉及的知识点的详细解释: ...
本指南的其余部分可能涵盖了更高级的主题,如数据访问层、业务逻辑层、服务集成、安全机制、性能优化和调试工具等,以帮助开发者全面掌握Pafa3新架构的开发和运维。然而,由于提供的信息有限,具体的细节无法在此...