大型社区网站的架构


最近一段时间看了一些大型社区网站的架构设计, 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对内存要求也不是太高,所以可以和平共处,更有效的利用资源

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

大型社区网站的架构!
优质内容筛选与推荐>>
1、mybatis使用@Param的坑
2、SomeThing what i discover
3、双重检查锁定与延迟初始化
4、Linux学习——网络传输(层)
5、Android与Unity交互研究


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号