大型Web2.0站点构建技术初探

时间:2008-01-11  CSDN

  现在插播一条广告,MyISAM VS InnoDB。

  使用InnoDB:

  支持事务

  需要做更多的配置,不过值得,可以更安全的存储数据,以及得到更快的速度。

  使用MyISAM:

  记录日志(LJ用它来记网络访问日志)

  存储只读静态数据,足够快。

  并发性很差,无法同时读写数据(添加数据可以)

  MySQL非正常关闭或死机时会导致索引错误,需要使用myisamchk修复,而且当访问量大时出现非常频繁。

  9、缓存

  去年我写过一篇文章介绍memcached,它就是由LJ的团队开发的一款缓存工具,以key-value的方式将数据存储到分布的内存中。LJ缓存的数据:

  12台独立服务器(不是捐赠的)

  28个实例

  30GB总容量

  90-93%的命中率(用过squid的人可能知道,squid内存加磁盘的命中率大概在70-80%)

  如何建立缓存策略?

  想缓存所有的东西?那是不可能的,我们只需要缓存已经或者可能导致系统瓶颈的地方,最大程度的提交系统运行效率。通过对MySQL的日志的分析我们可以找到缓存的对象。

  缓存的缺点?

  没有完美的事物,缓存也有缺点:

  增大开发量,需要针对缓存处理编写特殊的代码。

  管理难度增加,需要更多人参与系统维护。

  当然大内存也需要钱。

  10、Web访问负载均衡

  在数据包级别使用BIG-IP,但BIG-IP并不知道我们内部的处理机制,无法判断由哪台服务器对这些请求进行处理。反向代理并不能很好的起到作用,不是已经够快了,就是达不到我们想要的效果。

  所以,LJ又开发了Perlbal。特点:

  快,小,可管理的http web 服务器/代理

  可以在内部进行转发

  使用Perl开发

  单线程,异步,基于事件,使用epoll , kqueue

  支持Console管理与http远程管理,支持动态配置加载

  多种模式:,反向代理,插件

  支持插件:GIF/PNG互换?

  11、MogileFS

  LJ使用开源的MogileFS作为分布式文件存储系统。MogileFS使用非常简单,它的主要设计思想是:

  文件属于类(类是最小的复制单位)

  跟踪文件存储位置

  在不同主机上存储

  使用MySQL集群统一存储分布信息

  大容易廉价磁盘

  到目前为止就这么多了,更多文档可以在http://www.danga.com/words/找到。Danga.com和LiveJournal.com的同学们拿这个文档参加了两次MySQL Con,两次OS Con,以及众多的其它会议,无私的把他们的经验分享出来,值得我们学习。在web2.0时代快速开发得到大家越来越多的重视,但良好的设计仍是每一个应用的基础,希望web2.0们在成长为Top500网站的路上,不要因为架构阻碍了网站的发展。

  八、说说大型高并发高负载网站的系统架构

  我在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大家一起探讨一下。

  一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。

  大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。

  上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。


上一页 1 2 3 4 5 6 78 下一页
关键字导航:

文章评论

共有 0 位印刷者发表了评论 查看完整内容