`

从架构差异看Web高性能开发

    博客分类:
  • java
阅读更多
一般情况下,架构分两种来讨论的,一种是开发架构,一种是部署架构

部署架构,就是开发完的程序在实际运行环境下,通过负载均衡,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高性能开发.doc

    我对这个的观点是,所有的架构都是死的,而Web高性能开发优化策略是活的,我在开发中,所有的东西都不是一定要按照什么固定的模式,去死开发,更多的是针对需要优化的信息进行针对处理,下面说说我的优化策略

    多技术栈及高低代码混合开发 - 华为云低代码平台架构探讨

    跨平台开发是为了增加代码复用,减少开发者对多个平台差异适配的工作量,降低开发成本,提高业务专注的同时,提供比Web更好的体验。本专场将邀请一线技术专家分享相关技术实践,给大家带来更多的思考和经验参考。

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...

    《iOS6开发指南》精彩书摘

    开发采用的架构是分层设计的,对于iOS开发也是非常重要的。  本书没有包括多媒体等知识,我们会在另外一本iOS游戏开发书中介绍,具体进展请读者关注我们智捷iOS课堂官方网站http://www.51work6.com

    新版Android开发教程.rar

    � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的...

    JavaWeb后台开发框架-其他

    JavaWeb介绍:1、模块化:全新的架构和模块化的开发机制,便于灵活扩展和二次开发。2、模型/栏目/分类信息体系:通过栏目和模型绑定,以及不同的模型类型,不同栏目可以实现差异化的功能,轻松实现诸如资讯、下载、...

    ARM架构芯片在服务器端的发展前景.pdf

    创亚咨询 一、服务器的基本的概要 在信息系统中,服务器主要应用于数据库和Web服务,而PC主要应用于桌面计算和网络终端,设计根 本出发点的差异决定了服务器应该具备比PC更可靠的持续运行能力、更强大的存储能力和...

    asp.net知识库

    Visual Web Development 2005开发ASP.NET使用小技巧 ASP.NET 2.0 异步页面原理浅析 [1] [原] 自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的...

    fluxts-todomvc:使用 Typescript 的 Flux TodoMVC 示例

    Flux 是 Facebook 用于构建客户端 Web 应用程序的应用程序架构。 它通过利用单向数据流补充了 React 的可组合视图组件。 是一个用于构建用户界面的 Javascript 库。 React 使用虚拟 DOM 差异实现来实现超高性能。 ...

    ASP.NET在线测评系统

    数据库管理系统选用SQL_server2000,SQL_server2000是Microsoft推出的高性能关系数据库管理系统,是Microsoft公司在大型数据库领域的最新版本和旗舰产品,也是Microsoft公司争夺电子商务领域最重要的核心部件市场...

    【重磅】史上最全的阿里云分享的云原生技术学习资料合集(120份).zip

    阿里云文件存储:K8s 云原生场景下的共享高性能存储 安全容器的发展与思考 拐点已至, 云原生引领数字化转型升级 拐点已至,云原生引领数字化转型升级易立 函数计算在 双11 小程序场景中的应用 基于 K8s 扩展机制...

    基于J2EE框架的个人博客系统项目毕业设计论...

    3. Web服务器:Tomcat 5.5及以上版本,配合MVC设计模式及 Hibernate开发架构; 4. 客户端运行环境:能运行IE 5以上或Netscape 5以上浏览器的操作系统,配合使用Ajax技术; 5. 客户端运行工具:目前的系统采用...

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

    3. Web服务器:Tomcat 5.5及以上版本,配合MVC设计模式及 Hibernate开发架构; 4. 客户端运行环境:能运行IE 5以上或Netscape 5以上浏览器的操作系统,配合使用Ajax技术; 5. 客户端运行工具:目前的系统采用...

    C#微软培训资料

    超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以...

    WLAN智能网管系统设计方案.doc

    为解决以上问题,可通过开发wlan智能网管系统,实时发现wlan网络连通性和性能问题 ,实时进行异常变动告警上传,变被动维护。 2.wlan智能网管系统功能 系统中直接面向用户业务的有4个子功能模块,按照主要功能作用...

    Bigtable:一个分布式的结构化数据存储系统

    尽管应用需求差异很大,但是,针对Google的这些产品,Bigtable还是成功的提供了一个灵活的、高性能的解决方案。本论文描述了Bigtable提供的简单的数据模型,利用这个模型,用户可以动态的控制数据的分布和格

    测试培训教材

    按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。  -测试需求的分析和确定。  -测试计划。  -测试设计。  -测试执行。  -...

    hashtopolis:Hashcat包装器,用于分布式哈希破解

    Hashtopolis Hashtopolis是一种用于将hashcat任务分发到多台计算机的多平台客户端-服务器工具。 Hashtopolis发展的... 数据库架构从索引中大量获利。 因此,如果您看到有关对哈希表进行预排序的提示,请这样做。 Web

Global site tag (gtag.js) - Google Analytics