`
huangxx
  • 浏览: 322574 次
  • 来自: ...
社区版块
存档分类
最新评论

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

阅读更多

分析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的创业者,在设计网站时,可以参考参考,少走弯路。

 
评论

相关推荐

    jp.co.mixi.monsterstrikeTW_25.5.0_signed_mod_YasKashije_platinmods.com.apk

    jp.co.mixi.monsterstrikeTW_25.5.0_signed_mod_YasKashije_platinmods.com.apk

    国内外知名SNS开源介绍

    - **简介**:OpenPNE是一款来自日本的成熟SNS开源系统,其架构类似于日本最大的SNS网站Mixi。该系统在用户隐私保护方面做得非常好。 - **特点**: - 用户隐私保护:拥有非常完善的安全机制,保护用户的个人信息。 ...

    Web2.0站点构建技术初探

    四、 mixi.jp:使用开源软件搭建的可扩展SNS网站 五、 Technorati的后台数据库架构 六、 通过了解MySpace的六次重构经历,来认识分布式系统到底该如何创建 七、 从LiveJournal后台发展看大规模网站性能优化方法 ...

    高性能高并发服务器架构大全

    mixi.jp:使用开源软件搭建的可扩展SNS网站 51 总概关键点: 51 1,Mysql 切分,采用Innodb运行 52 2,动态Cache 服务器 -- 52 美国Facebok.com,中国Yeejee.com,日本mixi.jp均采用开源分布式缓存服务器Memcache ...

    memcached完全剖析 翻译整理

    它最初由 Brad Fitzpatrick 在 LiveJournal 公司开发,目前已被广泛应用于各种互联网服务中,如 mixi、hatena、Facebook、Vox 和 LiveJournal 等。 **特点:** 1. **协议简单**:Memcached 使用一种基于文本行的...

    React高阶组件

    新组件通常会扩展原有组件的功能,如增加props、改变props或者封装数据获取逻辑。 使用HOC的常见场景包括: 1. **数据注入**:HOC可以为组件提供所需的数据,比如从API请求数据,然后将其作为props传递给子组件。 2...

    MiXi2001.github.io

    标题 "MiXi2001.github.io" 暗示这是一个个人或项目在 GitHub 上的网页托管站点。GitHub 是一个面向开源及私有软件项目的托管平台,尤其以其 Git 版本控制系统而闻名。用户可以创建自己的仓库(Repository),并将...

    论文研究-SNS网站技术简析 .pdf

    在内容存储和查询方面,大型SNS网站如Facebook、Mixi使用Mysql存储所有用户数据,包括用户信息和用户产生的内容。采用一些配置机制可以极大提升性能。图片数据由于量大且访问频率不同,应分开存放,并根据访问频率...

    Laravel开发-mixi

    Laravel Mixi包是一个第三方扩展,它允许开发者轻松地在Laravel项目中接入Mixi API,以便进行用户身份验证、数据获取等操作。这个包通常包含了对Mixi API的封装,简化了请求和响应的处理流程。 要在Laravel项目中...

    Mixi-D+Toolbar.exe.dat

    Mixi-D+Toolbar.exe.dat

    Memcached内存分析、调优、集群.pptx

    2. 启动Memcached:使用-d参数以守护程序方式运行,使用-u参数指定用户,使用-P参数保存PID到指定文件。 3. Memcached命令:-m参数设置内存数量,-M参数禁止LRU,-n参数设置初始chunk大小,-f参数设置增长因子,-L...

    memcached全面剖析

    1.4 用客户端连接...........................................................................................................................8 1.5 使用Cache::Memcached......................................

    收集的大型网站架构实例

    【大型网站架构实例详解】 ...通过对Mixi和Flickr等大型网站架构的分析,我们可以学习到如何构建能够承受大规模用户负载、保持高可用性和可扩展性的系统。这些实践经验对其他大型网站的架构设计提供了宝贵的参考。

    mixi-inc.github.io

    【标题】"mixi-inc.github.io" 是一个与GitHub托管的项目相关的网页源代码库,可能代表一家名为mixi Inc.的公司或个人在GitHub上的公开网页。这个项目可能包含了该公司的网站源代码,用于展示产品、服务或者分享技术...

    Memcached 原理和使用详解

    Memcached是一种高性能的分布式内存缓存系统,最初由LiveJournal的开发团队设计,用于减轻数据库负载,提升动态Web应用的响应速度和可扩展性。它的工作原理是将数据存储在内存中,当需要数据时,直接从内存中读取,...

    高性能高并发服务器架构

    文档中提到Facebook、Yeejee以及Mixi等知名网站都采用了Memcached作为缓存解决方案。 ##### 3. 图片缓存与加速 - **图片缓存**:利用缓存技术对热点图片进行存储,减少重复读取数据库的次数,从而提高响应速度。 - ...

    Memcached内存分析、调优、集群.pdf

    包括LiveJournal、Facebook、mixi、Digg、Wikipedia、Voxfacebook等知名网站都在使用Memcached作为其后端缓存服务。例如,Facebook曾经拥有超过20台Memcached服务器,每台服务器配备四核AMD64处理器,总缓存数据量...

    SNS App Swap-crx插件

    SNS App Swap Extension可以用另一个正在开发的应用程序替代在线应用程序,以便在获得SNS开放平台授权之前可以在产品环境中开发和测试该应用程序。 与SNS开放平台集成后,某些SNS网站(例如cyworld...

Global site tag (gtag.js) - Google Analytics