大型web2.0互动网站设计方案:分析mixi.jp and Yeejee.com:用开源搭建的可扩展大型SNS网站

转载 2007年10月11日 11:20:00
原贴:http://blog.csdn.net/jim_yeejee/archive/2007/07/18/1697363.aspx

大型web2.0互动网站设计方案

分析mixi.jp and Yeejee.com:用开源搭建的可扩展大型SNS网站(一)

总概关键点:

1,Mysql 切分,采用Innodb运行

2,动态Cache 服务器 --

美国Facebok.com,中国Yeejee.com,日本mixi.jp均采用开源分布式缓存服务器Memcache

3,图片缓存和加速

 

Mixi目前是日本排名第三的网站,全球排名42,主要提供SNS服务:日记,群组,站内消息,评论,相册等等,是日本最大的SNS网站。Mixi从2003年12月份开始开发,由现在它的CTO - Batara Kesuma一个人焊,焊了四个月,在2004年2月份开始上线运行。两个月后就注册了1w用户,日访问量60wPV。在随后的一年里,用户增长到了21w,第二年,增长到了200w。到今年四月份已经增长到370w注册用户,并且还在以每天1.5w人的注册量增长。这些用户中70%是活跃用户(活跃用户:三天内至少登录一次的用户),平均每个用户每周在线时间为将近3个半小时。

下面我们来看它的技术架构。Mixi采用开源软件作为架构的基础:Linux 2.6,Apache 2.0,MySQL,Perl 5.8,memcached,Squid等等。到目前为止已经有100多台MySQL数据库服务器,并且在以每月10多台的速度增长。Mixi的数据库连接方式采用的是每次查询都进行连接,而不是持久连接。数据库大多数是以InnoDB方式运行。Mixi解决扩展问题主要依赖于对数据库的切分

首先进行垂直切分,按照表的内容将不同的表划分到不同的数据库中。然后是水平切分,根据用户的ID将不同用户的内容再划分的不同的数据库中,这是比较通常的做法,也很管用。划分的关键还是在于应用中的实现,需要将操作封装在在数据层,而尽量不影响业务层。当然完全不改变逻辑层也不可能,这时候最能检验以前的设计是否到位,如果以前设计的不错,那创建连接的时候传个表名,用户ID进去差不多就解决问题了,而以前如果sql代码到处飞,或者数据层封装的不太好的话那就累了。

这样做了以后并不能从根本上解决问题,尤其是对于像mixi这种SNS网站,页面上往往需要引用大量的用户信息,好友信息,图片,文章信息,跨表,跨库操作相当多。这个时候就需要发挥memcached的作用了,用大内存把这些不变的数据全都缓存起来,而当修改时就通知cache过期,这样应用层基本上就可以解决大部分问题了,只会有很小一部分请求穿透应用层,用到数据库。Mixi的经验是平均每个页面的加载时间在0.02秒左右(当然根据页面大小情况不尽相似),可以说明这种做法是行之有效的。Mixi一共在32台机器上有缓存服务器,每个Cache Server 2G内存,这些Cache Server与App Server装在一起。因为Cache Server对CPU消耗不大,而有了Cache Server的支援,App Server对内存要求也不是太高,所以可以和平共处,更有效的利用资源。

图片的处理就显得相对简单的多了。对于mixi而言,图像主要有两部分:一部分是经常要使用到的,像用户头像,群组的头像等等,大概有100多GB,它们被Squid和CDN所缓存,命中率相对比较高;另一部分是用户上传的大量照片,它们的个体访问量相对而言比较小,命中率也比较低,使用Cache不划算,所以对于这些照片的策略是直接在用户上传的时候分发到到图片存储服务器上,在用户访问的时候直接进行访问,当然图片的位置需要在数据库中进行记录,不然找不到放在哪台服务器上就郁闷了。

国内领先的SNS网站-采用类似的系统架构,在下面的文章会进行分析对比。这是稳定与典型的大型互动网站系统架构,web2.0的创业者,在设计网站时,可以参考参考,少走弯路。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1697363

 

大型web2.0互动网站设计方案

分析mixi.jp and Yeejee.com:用开源搭建的可扩展大型SNS网站(一) 总概关键点: 1,Mysql 切分,采用Innodb运行 2,动态Cache 服务器 -- 美国Faceb...
  • txj236
  • txj236
  • 2013年08月02日 09:02
  • 317

分布式计算,大型网站技术架构:核心原理与案例分析

商业转载请联系作者获得授权,非商业转载请注明出处。 作者:李小翀 链接:https://www.zhihu.com/question/22764869/answer/31277656 来源:知乎...
  • u010725670
  • u010725670
  • 2016年02月03日 20:13
  • 639

《大型网站技术架构:核心原理与案例分析》

大型网站架构演化 大型网站软件系统的特点 大网站架构演化发展历程 初始阶段的网站架构 应用服务和数据服务分离 使用缓存改善网站性能 使用应用服务器集群改善网站的并发处理能力 数据库读写分离 使用反向代...
  • hubinqiang
  • hubinqiang
  • 2016年04月05日 00:53
  • 3992

读-李智慧-大型网站技术架构:核心原理与案例分析

网站构架演进 大型网站的特点 架构演化历程 价值观 架构模式 分层 分割 分布式 集群 缓存 异步 冗余 自动化 安全 性能 性能测试 web前端性能优化 应用服务器性能优化 存储性能优化 可用性 可...
  • xiaoxufox
  • xiaoxufox
  • 2016年11月24日 09:22
  • 2764

大型网站技术架构:核心原理与案例分析pdf

下载地址:网盘下载 编辑推荐 编辑 本书作者是阿里巴巴网站构建的亲历者,拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发展过程中的种种生与死,蜕与变,见证了一个网站架构从幼稚...
  • cf406061841
  • cf406061841
  • 2017年07月22日 17:00
  • 931

大型分布式网站架构技术总结

出处:ITFLY8 网址:http://www.cnblogs.com/itfly8/p/4967966.html 本文是学习大型分布式网站架构的技术总结。对架构一个高性能...
  • centre10
  • centre10
  • 2016年02月23日 21:03
  • 3507

大型网站系统的特点 优化方向

大型网站系统的特点 高并发,大流量 高可用 海量数据 用户分布广泛,网络情况复杂 安全环境恶劣 需求快速变更,发布频繁 渐进式发展网站使用的缓存可以分为两种: 一种是在应用服务器上的...
  • linlin_xia
  • linlin_xia
  • 2017年02月19日 20:43
  • 662

读《大型网站技术架构:核心原理与案例分析+李智慧》记一

震惊知识一: 小型网站的设计: 应用程序、数据库、文件在同一台服务器上,通常服务器操作系统使用Linux,应用程序使用PHP开发,数据库使用MySql随着网站业务的发展,一台服务器不能满足...
  • qq_17165717
  • qq_17165717
  • 2016年01月29日 21:27
  • 515

《大型网站技术架构:核心原理与案例分析》读书笔记

由于网站的访问流量是缓慢增长的(PS除了垄断的12306),所以一般网站的架构也是不断的演化的,没有一开始就搞出个支持大并发的网站。无论从开发到发布的时间、消耗的资源上来看,或者是说从开发、维护的难度...
  • ysu108
  • ysu108
  • 2016年07月12日 10:21
  • 658

大型网站的HTTPS实践(一)---HTTPS协议和原理

1前言百度已经于近日上线了全站HTTPS的安全搜索,默认会将HTTP请求跳转成HTTPS。本文重点介绍HTTPS协议,并简单介绍部署全站HTTPS的意义。 本文最早发表于[百度运维部官方博客](htt...
  • luocn99
  • luocn99
  • 2015年05月03日 19:16
  • 21017
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大型web2.0互动网站设计方案:分析mixi.jp and Yeejee.com:用开源搭建的可扩展大型SNS网站
举报原因:
原因补充:

(最多只允许输入30个字)