专访人人网黄晶:SNS网站后台架构探秘

转载 2012年03月29日 15:29:20

正文地址:http://news.cnblogs.com/n/73582/


人人网作为国内大型SNS站点的代表,其目前已经拥有真实注册用户超过7000万、PV达到了4亿、日登录2200万人次。面对如此庞大的访问量,人人网的后台架构是怎样的一番景象呢?

  记者:作为国内大型SNS站点的代表,我们知道人人网后台主要采用Java语言编写,同其他形式的站点相比,SNS站点在网站架构方面有什么样的特点?

  黄晶:SNS网站用户数据量庞大且关系复杂,对实时性要求非常高,因此要求SNS网站架构要有很强的水平扩展性。

  记者:在后台语言的选择上,有其他大型SNS站点使用PHP,人人网则选择了Java,使用Java的优势在体现哪些方面?

  黄晶:Java的优势体现在当项目日渐复杂的时候,可以通过Java良好的OO特性,保持非常好的模块性,在进行网站重构的时候比较方便,在代码量增大的时候也可保持良好的可管理性。

  记者:现在很多大型网站的后台都使用了大量的开源软件,人人网是否也是如此呢?咱们的开发团队是否也在开发自己的框架呢?

  黄晶:人人网也使用了大量开源软件,比如MySQL、Memcached、ICE、Hadoop等,同时我们也根据业务需要研发了自己的框架,比如MVC框架,分布式KV存储系统。

  记者:一个网站在发展过程中,后台都会经历不断的重构,从初期的校内网、到现在的人人网,网站架构最大的变化在哪?

  黄晶:从初期的校内网到现在人人网,最大的变化是:很多底层服务都从利用已有开源软件的搭建,变成了根据业务需要,由我们自己开发专门的服务所代替,这样能够提高资源利用程度,提高整个系统的可用性。

  记者:我们知道人人网的用户量非常庞大,在数据库方面,人人网采用了哪种数据库?除了高性能、可扩展性外,人人网对数据库的需求还有哪些?在整个后台系统架构中,往往数据库的性能也会出现瓶颈,从早期的校内网到现在,我们对数据库性能的优化方面都做了哪些大的改变?

  黄晶:我们采用的数据库是MySQL,在需求方面,我们也非常关注高可用性。早期校内从单数据库,到主从接口,发展到后来垂直拆分,然后水平拆分,然后在每个节点上实现主-主提高可用性,到异地备份容灾。目前我们的数据库已经有非常强的水平扩展能力和非常高的可用性。

  记者:数据缓存在后台架构中同样非常重要,在数据库服务器、Web服务器以及两者之间,人人网都采用了哪些缓存手段?

  黄晶:我们的数据库用到了部分自身缓存机制,比如尽可能利用innodb的pool和MySQL的Query Cache。在中间用到Memcached,以及基于ICE通讯框架由我们自己编写的包含业务逻辑处理能力的缓存服务,在我们自行开发的分布式KV系统中也会充分利用内存Cache加速。

  记者:目前国内外也有很多大型站点在使用NoSQL,从功能上来将,其非常适合应用在SNS、微博等站点,人人网是否在考虑使用NoSQL呢?

  黄晶:对于NoSQL,我们已经考虑并在逐步试用自行开发的Nuclear分布式KV存储系统。

  记者:上传照片或者图片是SNS网站用户很常用的一个功能,对于Web服务器来讲,图片是非常消耗资源的,那么目前人人网每天大概有要处理多少张图片?相比较其他数据而言,图片会占用大量存储空间,给服务器带来不小的压力,我们知道Facebook有着一套自己的图片存储架构,咱们人人网在这方面是怎么做的呢?

  黄晶:现在人人网每天要处理千万张级别的照片数量。我们使用由C++专门编写的Web服务来处理照片上传和压缩工作。存储是用一套分布式文件存储系统,在小文件很多的情况下,也会采用把小文件聚合为大文件的方式提高性能,这样的做法也便于大量小文件的备份。

  记者:目前SNS站点都有很强的实时性,用户能够第一时间看到好友都在做什么,像人人网以及Facebook等,还有即时聊天功能,我们是通过什么样的手段来最大限度的优化每一个页面,从而尽可能的减少服务器的请求时间,提高用户体验的呢?

  黄晶:我们的做法是尽可能把数据放在内存中,提高数据存取速度。另外,复杂的页面采用并发机制,多线程同时从多个后台源取数据拼成页面。

  记者:最后,还想请黄晶老师谈一谈SNS网站后台技术的发展趋势,以及从事SNS后台开发的开发者需要关注那几方面?

  黄晶:鉴于SNS网站的一些业务特点,在后台技术中,我们最关注的仍然是高性能,可扩展性,高可用性。并且SNS所提供的服务也在变化中,对于业务的多变,架构要有灵活适应的能力,否则需要提供新服务的时候重构之前的系统工作量很大。类似Google的GFS/Bigtable/MapReduce一系列通用的分布式系统非常优秀,可以支撑很多Google的业务需要。所以在SNS网站架构中也需要一个能灵活应对业务变化的一套健壮的分布式系统。


国内外大型SNS网站后台架构对比

要问时下什么类型的站点人气最旺?答案当属SNS网站。短短几年的时间,SNS便迅速确立了Web 2.0核心的地位。用户的增长量之快更是让人咂舌,而Facebook访问量首次超越Google的消息也让人觉...
  • he90227
  • he90227
  • 2014年11月27日 14:33
  • 1508

浅谈全区全服架构的SNS游戏后台

首先说下分区分服和全区全服的概念,查了一下资料,没有找到合适的定义。说下自己的理解:所有游戏服务器都有玩家数据库,如果以数据库为单位划分Set,单Set如果能承载超过10万的同时在线,可以认为是全区全...
  • tengxy_cloud
  • tengxy_cloud
  • 2016年11月14日 10:14
  • 526

豆瓣技术架构

豆瓣网CTO洪强宁讲述网站架构变迁 罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。洪强宁,2002年毕业于清华大学,现任北京豆瓣互动科技有限公司首席架构师。洪强宁和他...
  • joeyon
  • joeyon
  • 2015年01月23日 17:44
  • 1282

Python2 爬虫(四) -- 模拟登陆(人人网和知乎)

人人网登录成功#! /usr/bin/env python # coding:utf-8import sys import re import urllib2 import urllib import...
  • bug_moving
  • bug_moving
  • 2016年10月22日 14:23
  • 963

人人网面试经历

对于一年开发经验的程序员来说是非常尴尬的,经过一个月的面试总结,也快入职心仪的公司了,差不多算是敲定了工作。所以想到陆续的放出一些互联网公司的面试经验来,虽然面不上,但是可提供给别人参阅,以便你们遇到...
  • zhang5476499
  • zhang5476499
  • 2017年06月05日 21:51
  • 1585

调用人人网API

大致步骤与上篇调用新浪微博API类似,不过感觉新浪微博的做的更好一些,人人网的很多...
  • Sad_Sugar
  • Sad_Sugar
  • 2014年05月16日 01:31
  • 1424

一个简单的不用cookie的人人网状态爬取的python爬虫,使用beautifulsoup

昨天晚上闲着无聊翻翻人人,想来过去几年一直用的人人,里面好多喜怒哀乐。正好最近在写爬虫,干脆把它都弄下来留着吧。于是开工。 爬取的是我自己的全部已经发过的状态。 先是,向所有人一样...
  • sscssz
  • sscssz
  • 2015年11月21日 14:57
  • 1120

1年时间业务量疯长40倍,谈人人车的平台架构演进之路

人人车业务平台从最初典型的LNMP单机单服务部署架构,发展到如今分布式服务化架构,五百多台虚拟机部署,一路走来,踩过不少坑,也遇到过不少挑战,特别是对于基于云服务进行业务开发的场景,以及从零开始服务化...
  • u010414666
  • u010414666
  • 2016年08月25日 09:18
  • 659

用HttpClient抓取人人网高校数据库(省,高校,院系三级级联)--更新1

更新备注:将src文件改成了一个完整的项目,解压后可以直接导入到Eclipse中去,省去大家配置(项目乱码请改项目属性为GBK)。另外,如果你要登陆人人网 的话,需要申请一个人人网账号。这里提供公用的...
  • xiyang_1990
  • xiyang_1990
  • 2013年11月11日 20:10
  • 1899

7个开源的SNS社交网络平台

1. Dolphin       Dolphin是一个最受欢迎的社交网络构建系统,基于PHP+MySQL开发。提供的功能包括:100% AJAX论坛,照片共享,视频聊天,视频共享/播放,音...
  • shanzhizi
  • shanzhizi
  • 2015年07月01日 17:49
  • 6243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:专访人人网黄晶:SNS网站后台架构探秘
举报原因:
原因补充:

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