大型高并发高负载网站的系统架构浅淡

怎么样才能高效的开发程序?有一部份人会说,程序就是堆积木,到网上找些模块来用就好了;有另外一部份人会说,能够找一些现成的框架与开源软件下载来修改就好了。php

大型高并发负载网站的系统架构浅淡

怎么样才能高效的开发程序?有一部份人会说,程序就是堆积木,到网上找些模块来用就好了;有另外一部份人会说,能够找一些现成的框架与开源软件下载来修改就好了。你们都说的没错,如今国内的开发人员广泛不会考虑程序的性能与代码的大小,只图快速完成任务就OK了。

那么怎样才能高效的开发出功能强大、稳定性高、安全性强、负载量重的程序呢?不少程序开发相关人员可能从未想过这方面的问题。当今的程序是愈来愈大,不少网站代码都差很少,使用的框架太尽相同,代码中包含了太多无用的代码模块,我相信也有一部分程序开发人员对本身所使用的框架是怎么运行的都不太清楚。清楚是框架是怎么运行的太麻烦了,会用就好了,这话说的没错,但也别忘了程序代码能够随便COPY,但程序真正的精髓是思想,思路是没法COPY的。算法

 


本文我将以Nginx + Php + MySql + Memcached来讨论一下如何设计高负载的网站系统架构

之前我一直觉得大型高并发负载的网站瓶颈是MYSQL,后来我从一高人那了解到一种全新的设计思想才知道原来大型网站的瓶颈是WEB服务器链接数。

高人的设计思想是,动态网站的内容第一次生成后就存储到Memcached当中,当第二次有链接请求时,PHP程序先判断此页面的内容是否在Memcached当中有存在,若存在则直接输出Memcached当中所对应的页面内容。那么又会有人问:要是个人页面须要即时更新怎么办了?对于这个问题,我想更新不会整个页面当中的内容全更新吧,就拿论坛来讲,咱们须要即时更新访问人数,而页面的内容并无作修改,这时怎么办才好了?这时咱们能够在显示访问人数处做一个标记,而且记录访问数量时并不时时同步更新到数据库当中,而先更新来到Memcached当中,再将须要更新的SQL语句也存储到Memcached异步SQL更新的队列当中,当有人访问页面时,再从Memcached当中获取访问人数,再替换标记就OK了。

我可能没有说清楚,但这种东西讲不清楚,我最后将总结的几句写下。

1、        数据库设置1台MASTER数据库只写,N台SLAVE数据库只读。
2、        记住MASTER数据库不建立索引,而SLAVE数据库定要建立大量索引。
3、        页面的生成可采用静态,若非要采用动态请加上Memcached。
4、        非即时需更新与新增的SQL采用异步更新到MASTER库,异步的SQL存储到Memcached当中,定时或条件触发更新到主库当中。
5、        存储到Memcached当中的数据尽量的小,不要存储大数组,若非来存储大数组,请拆分红多个KEY分别进行存储。
6、        MYSQL 与Memcached不对外网,只对WEB服务提供内网服务。
7、        不采用SESSION,采用COOKIE加密码校验算法,非要采用SEESION请将SESSION存储到数据表内存表或Memcached当中。
8、        多服务器WEB程序与WEB服务器作境像,采用DNS轮循定位。
9、        尽量的少写代码,能重复使用的代码尽量的重用,代码尽量的精短高效,以追求精益求精为宗旨。
10、        动态页面(PHP JSP ASP)与静态页面(HTML JPG GIF PNG)最好分服务器专门提供服务。
11、        有条件的话静态文件或大图片文件有条件可采用CDN服务。
12、        有C语言技术作后盾的话可用C语言开发PHP扩展。

固然以上的办法较适合服务器资源有限,如果财大气粗的您还将会有不少的解决方案,在此就不描述了。
顺便借此来推销一下本人使用多年的PHP框架,您也还能够下载wcore框架试试http://www.hoojar.com/tmp/wcore.zip但愿能对您在程序设计思想上有所帮助。谢谢!
言谈不足,望众互教,众献良思,技艺超群,普遍学习,授教如众。数据库

 


转载:http://www.hoojar.com/view-lore.php?lid=66963  大型高并发高负载网站的系统架构浅淡数组

相关文章
相关标签/搜索