大型社区网站的架构

最近一段时间看了一些大型社区网站的架构设计, livejournal,mixi.jp,flick,feedburner,这些网站都有一些共同的特点;数据量大,在线人数多,并发请求多,pageview高,响应速度快,甚至mixi.jp宣称其平均页装载速度0.02秒。

这些网站都没有使用什么大型的"高级"的数据库,全都是Mysql,也没有使用什么"高级"的语言,主要都是perl/php等,只有FB用的是java。这些网站的这些高性能指标基本上都要归功与各网站都有很好的架构设计。

总结了一下各个大型社区网站的架构,希望对我们的产品能够有所借鉴,
主要提高效率及稳定性的几个地方包括:

1,基于集群的负载均衡,失败恢复,包括应用服务器和数据库服务器

基于linux-ha的服务状态检测及高可用化

2,前端的基于静态页面缓存的web加速器,主要应用有squid等

squid 将大部分静态资源(图片,js,css等)缓存起来,直接返回给访问者,减少应用服务器的负载

3,数据库服务器的master-slave模式,利用数据库服务器在主从服务器间进行同步,应用只把数据写到主服务器,而读数据时则根据负载选择一台从服务器或者主服务器来读取

4,将数据按不同策略划分到不同的服务器(组)上,分散数据库压力

5,利用Memcache进行缓存,用大内存把这些不变的数据全都缓存起来,而当修改时就通知cache过期

memcache是LJ开发的一款分布式缓存产品,很多大型网站在应用,我们可以把Cache Server与App Server装在一起。因为Cache Server对CPU消耗不大,而有了Cache Server的支援,App Server对内存要求也不是太高,所以可以和平共处,更有效的利用资源

以上一些不太成熟的想法,我们可以从某一个层次开始,逐步细化,把我们产品的性能指标逐步搞上去。

大型社区网站的架构!

你可能感兴趣的:(架构)