一般情况下,架构分两种来讨论的,一种是开发架构,一种是部署架构

部署架构,就是开发完的程序在实际运行环境下,通过负载均衡,DNS轮询,SquID等等来减轻单台服务器负载,达到性能优化的目的

这里大家估计更想了解的是开发上的架构

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

1、数据库优化,这个是所有的优化策略中中重要的,可以说数据库设计的好坏,直接影响了一个系统的承受力。普通的数据库细节优化,网上已经有大笔文章了,没什么好说的,想了解的自己去找。而我要说的就是在数据库设计中的一个思路,分库、分表、缓存表。

1)分库指的是在设计中,要考虑到后期数据量大的情况下,你的数据库能够随着应用随时拆分,这个拆分并不是只是针对功能模块对应的数据拆分。举个例子,就用CSDN论坛吧,比如里面有很多类,C#版,JAVA版,系统设计版等等,拆分的目的是可以把任何一个版的数据拆分到单独的一个数据库中去。

2)分表相对的就好理解了,就是说同类型的数据,你可以为了性能优化,进行拆分到多个表中去,拆分规则可以有多种,按照类型、按照时间、按照姓名等等。同样以CSDN论坛来说,我要设计的话,我会按照里面的大版面进行数据库拆分,而按照小版,进行表拆分。

3)而对于缓存表,网上我还很少看到有人来说这个东西,这个的目的就是针对一个大的数据表中,一般中有死数据库和活动数据,比如用户表,里面有很多基本不来的用户,那么针对这样的情况,当表数据上了千万的时候,我就会采用缓存表的模式来进行了,就是在实际表和用户之间在搭建一个临时表,访问用户数据时,首先访问临时表,如果不存在,则进入实际表中获取,然后放入缓存表中,同时会通过后台线程,定时将缓存表数据同步到实际数据库中,同步时间可以针对系统要求来进行。

如果理解了上面的东西,那么在数据承载上,可以上升一个很大的层次。。。。。

2、程序优化。这个对我来说相对的就不是那么的看中了,程序的优化,我更多的认为是个技巧,而不是架构了,包括现在经常见到的那些各种设计模式,另外这里提下,很多设计模式,他的出发点并不是性能优化,而是考虑的系统扩展性,所以在单个技术细节上,很多人也发现了,并不如直接的写代码来的快,但是就是推荐那样,是因为采用了那些模式的程序,扩展性比你的强,那么一旦系统要求变动,或者是要求进行拆分的时候要比你方便的多,在分担到多个服务器上时,性能相对的就起到了优化也。废话了通,继续说我对程序部分经常采用的方式吧

1) 首推静态化,这个的优化效果不用多说,直接减轻了服务器负担,不过如果用上了Squid,那么有第三放来做静态,也可以达到同样的效果

2) 合适的数据缓存,缓存很多人都用到了,但是在使用前,是否认真思考过为这个这个要进行Cache,Cache他的标准是什么?我说下我的标准:小数据量、大访问量、更新尽量少的数据,全部可以进行缓存。另外我提到的缓存,并不只是说。NET本身提供的Cache,我说的缓存还包括了使用Static来进行的数据

3) 活用线程,很多人的观念中感觉线程好象在B/S中是用不到的,或者是没有必要。其实这个观念完全错,在特定情况下使用线程,可以提高的局部性能不是一点两点

4) 功能模块拆分,这个一般人基本都在做,我要补充的是,不只是在单个项目中进行功能模块的拆分,而是为了进行分步式开发而进行拆分

在其它的基本都是细节优化了,这个没有太多兴趣写了,网上资料应该不少,可以自己搜索查阅

上面的这几部分如果能在开发中,灵活运用上,可以说,你开发个CNblogs这样规模的站点,绝对不是难事。
我曾经开发的过的站点中,也有过社区,一个WEB 服务器,一个DB服务器,主题帖千万,回复帖有6000W左右吧,其它数据不算,运行过程中没出过任何问题,日访问在100W PV情况下,还没有达到性能瓶颈。

[经验分享]采用什么架构才能够承受庞大的大访问量?相关推荐

  1. web架构设计经验分享

    本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查 ...

  2. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(一)后台控制逻辑代码部分...

    我也是本着善意把自己的代码结构分享给大家,欢迎大家用批评指点.首先我为什么把这个标题写为恶人,因为我很喜欢招惹别人,因为喜欢跟别人交流,喜欢指出别人的缺点,偷偷学习别人的优点,所以大家都会反感我,因为 ...

  3. web架构设计经验分享(转)

    本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查 ...

  4. 千万级规模高性能、高并发的网络架构经验分享

    千万级规模高性能.高并发的网络架构经验分享 主 题 :INTO100沙龙 时间 :2015年11月21日下午 地点 :梦想加联合办公空间 分享人:卫向军(毕业于北京邮电大学,现任微博平台架构师,先后在 ...

  5. 新东方APP技术架构演进, C端技术经验分享

    新东方APP技术架构演进, C端技术经验分享 作者:张建鑫, 曾任IBM高级软件架构师, 滴滴高级技术专家, 现任新东方集团高级技术总监 古代东西方的思想家都产生过一个终极的追问,世界的本元到底是什么 ...

  6. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(三)商业逻辑代码部分...

    其实,写好几套管理软件后发现,其实大多管理软件,很多也不过是数据库设计得合理一些后 就是把数据搬来搬去而已,添加.删除.修改,然后进行一些统计分析而已.其实写代码都是 那些简单的程序Copy来Copy ...

  7. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(三)商业逻辑代码部分

    其实,写好几套管理软件后发现,其实大多管理软件,很多也不过是数据库设计得合理一些后 就是把数据搬来搬去而已,添加.删除.修改,然后进行一些统计分析而已.其实写代码都是 那些简单的程序Copy来Copy ...

  8. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(四)高效的后台权限判断处理

    一般一个用户都有个默认的岗位,例如我是项目经理,那项目经理应该 有啥权限等.我们设计时考虑到了复杂情况,一般会设计为一对多关系, 但是日常生活中,大部分情况下,导入导出数据时,都希望获得一个单 一的关 ...

  9. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(二)后台服务代码部分

    程序写太长了,大家看着也累,我也写着也很辛苦,接下来,还是写得简短一些,尽量多一些截图,少一些文字吧. 同样是,欢迎指点批评的同学,我虚心学习提高,改改以往的高姿态. 架设软件系统就像大家看饭店厨师炒 ...

最新文章

  1. C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)
  2. easyui-layout中的收缩层无法显示标题问题解决
  3. page event
  4. 代码对比工具,我就用这 6 个!
  5. 【Linux】一步一步学Linux——虚拟机简介和系统要求(04)
  6. word List 09
  7. 达梦数据库卡慢简单分析
  8. NB-IoT 备胎转正的背后,究竟意味着什么?
  9. 于Eclipse传导C/C++配置方法开发(20140721新)
  10. 【MiniSTM32_HAL库版本_V1.0】实验1跑马灯代码解释(超详细,适合初识STM32的朋友)
  11. 前端培训丁鹿学堂:nodeJS入门指南(一)
  12. android 投屏技术原理,什么是无线投屏技术,无线投屏技术原理解析
  13. 如何判断文件的编码方式
  14. 外网登录homeassistant
  15. NetBeans IDE教程
  16. CM311-1-CH(JL)-YST_905L3(B)-安卓9.0-原生设置-完美AI语音精简线刷固件包
  17. matlab 读取midi,matlab miditoolbox中的midi文件生成函数的改进
  18. Android部分手机报 解析包时出现问题 原因与解决方法
  19. 数字图像处理 - 投影重建图像(一)雷登变换和傅里叶切片
  20. php充值代码,基于php的加油卡充值接口调用代码实例

热门文章

  1. 滴滴这车值不值得上?前Google全球技术总监郄小虎说来来来
  2. “Google只认钱!机器学习20年没进步”,CMU学者炮轰AI第一大厂
  3. 何小鹏:从工程师思维到用户思维,这是互联网造车将带来的变革
  4. 0基础怎样理解深度学习的工作原理?做个票价预测工具就懂了
  5. pl/sql操作数据库之触发器的使用
  6. Linux系统下如何实现文件系统配额
  7. 数据库备份,及清理备份计划
  8. CentOS SVN 服务器搭建
  9. diffrences between ARP table and MAC address table
  10. 在SIP对讲机中RTP/RTCP的实现