开发大型高负载类网站有哪几点应用?

看了一些人的所谓大型项目的方法,我感觉都是没有说到点子上,有点难受。
我个人认为,很难衡量所谓项目是否大型,即便很简单的应用在高负载和高增长情况下都是一个挑战.因此,按照我的想法,姑且说是高负载高并发或者高增长情况下,需要考虑的问题.这些问题,很多是和程序开发无关,而是和整个系统的架构密切相关的.

操作方法

  • 01

    数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(主-从)方式进行同步复制,将查询和操作和分别在不同的服务器上进行操作。我推荐的是M-M-Slaves方式,2个主Mysql,多个Slaves,需要注意的是,虽然有2个Master,但是同时只有1个是Active,我们可以在一定时候切换。之所以用2个M,是保证M不会又成为系统的SPOF。Slaves可以进一步负载均衡,可以结合LVS,从而将select操作适当的平衡到不同的slaves上。 以上架构可以抗衡到一定量的负载,但是随着用户进一步增加,你的用户表数据超过1千万,这时那个M变成了SPOF。你不能任意扩充Slaves,否则复制同步的开销将直线上升,怎么办?我的方法是表分区,从业务层面上进行分区。最简单的,以用户数据为例。 根据一定的切分方式,比如id,切分到不同的数据库集群去。全局数据库用于meta数据的查询。缺点是每次查询,会增加一次,比如你要查一个用户nightsailer,你首先要到全局数据库群找到nightsailer对应的cluster id,然后再到指定的cluster找到nightsailer的实际数据。 每个cluster可以用m-m方式,或者m-m-slaves方式。这是一个可以扩展的结构,随着负载的增加,你可以简单的增加新的mysql cluster进去。

  • 02

    需要注意的是: 1、禁用全部auto_increment的字段 2、id需要采用通用的算法集中分配 3、要具有比较好的方法来监控mysql主机的负载和服务的运行状态。如果你有30台以上的mysql数据库在跑就明白我的意思了。 4、不要使用持久性链接(不要用pconnect),相反,使用sqlrelay这种第三方的数据库链接池,或者干脆自己做,因为php4中mysql的链接池经常出问题。

  • 03

    缓存 缓存是另一个大问题,我一般用memcached来做缓存集群,一般来说部署10台左右就差不多(10g内存池)。需要注意一点,千万不能用使用swap,最好关闭linux的swap。

  • 04

    负载均衡/加速 可能上面说缓存的时候,有人第一想的是页面静态化,所谓的静态html,我认为这是常识,不属于要点了。页面的静态化随之带来的是静态服务的 负载均衡和加速。我认为Lighttped+Squid是最好的方式了。 LVS <------->lighttped====>squid(s) ====lighttpd 上面是我经常用的。注意,我没有用apache,除非特定的需求,否则我不部署apache,因为我一般用php-fastcgi配合lighttpd,性能比apache+mod_php要强很多。 squid的使用可以解决文件的同步等等问题,但是需要注意,你要很好的监控缓存的命中率,尽可能的提高的90%以上。squid和lighttped也有很多的话题要讨论,这里不赘述。

  • 05

    存储 存储也是一个大问题,一种是小文件的存储,比如图片这类。另一种是大文件的存储,比如搜索引擎的索引,一般单文件都超过2g以上。 小文件的存储最简单的方法是结合lighttpd来进行分布。或者干脆使用Redhat的GFS,优点是应用透明,缺点是费用较高。我是指你购买盘阵的问题。我的项目中,存储量是2-10Tb,我采用了分布式存储。这里要解决文件的复制和冗余。深圳网站建设认为这样每个文件有不同的冗余,这方面可以参考google的gfs的论文。大文件的存储,可以参考nutch的方案,现在已经独立为hadoop子项目。(你可以google it)

  • 06

    其他: 此外,passport等也是考虑的,不过都属于比较简单的了。抛砖引玉而已。

(0)

相关推荐

  • 设计师打造高性价比个人网站的常用工具

    @老王经销商:上一篇我们大致介绍了选购域名的关键知识点和一些域名解析知识–<设计师如何打造高性价比个人网站之域名选购篇>,今天继续第二部分,科普当下的主流域名商和打造个人网站必备的PC端工 ...

  • 史上最全的25个UX/UI设计灵感类网站

    不论是UI设计师还是UX设计师每天花在找寻设计灵感的时间通常不会少于2小时以上,而多亏现在互联网的发展迅速,使得我们可以轻易就能从网上获取各种设计资源和设计灵感.本篇文章收集了最佳的25个UX和UI设 ...

  • 高端定制网站建设策划要怎么做?

    高端定制网站建设策划,也称作高端定制网站建设规划.高端定制网站解决方案,是一个高端定制网站建设成功与否的关键一步. 高端定制网站建设策划指是在网站建设实施前进行市场进行分析.确定网站建设的目的.明确高 ...

  • 视频音乐类网站加速解决方案

    随着互联网的迅速发展,如何避开带宽瓶颈和拥塞环节,使内容传输的更快.更稳定?如何才能让各地的用户都能进行高质量的访问,迅速.准确.安全让用户体验度更好,下面是视频类网站解决方法: 步骤/方法 01 行 ...

  • 如何做好游戏类网站优化

    操作方法 01 最近遇到一个普通朋友(主要通过网络认识),刚开始聊天挺默契,到后面就问我关于游戏类怎么搜索引擎优化,我一下了蒙,主要我平时很少玩游戏,一下子没办 法回答,只知道我以前在学校玩植物僵尸大 ...

  • 高冷的网站有点精致

    小编:来一发国外创意网站设计,看完了突然灵感大爆发.这组高冷风的网站略微干净了点.其实小编觉得风格与网站的内容搭配是相称的,合适的才是优秀. Karol Jaworski 专注艺术指导和形象设计的网站 ...

  • 如何打造一个高质量的网站呢

    如何打造一个高质量的网站呢 操作方法 01 曾经一个名人说过要做一个能存活一百年的企业,我们网站要求不那么高,但至少也得有存活个几年甚至几十年的潜力和价值不是,所以打造"专业化"的 ...

  • 高并发量网站解决方案

    操作方法 01 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网 ...

  • 设计师如何打造高性价比个人网站之域名选购篇

    @老王经销商:设计师如何从零开始打造一个网站,而且还不怎么花钱呢?其实很简单,步骤大致为:购买合适的域名→购买服务器并架设好相关服务→选择好合适的程序并安装调试.做完这些,一个简陋的个人网站就诞生了. ...