人人网做为国内大型SNS站点的表明,其目前已经拥有真实注册用户超过7000万、PV达到了4亿、日登陆2200万人次。面对如此庞大的访问量,人人网的后台架构是怎样的一番景象呢?关于此,51CTO独家专访了现任人人网产品技术高级总监黄晶老师。数据库
51CTO:做为国内大型SNS站点的表明,咱们知道人人网后台主要采用Java语言编写,同其余形式的站点相比,SNS站点在网站架构方面有什么样的特色?缓存
黄晶老师:SNS网站用户数据量庞大且关系复杂,对实时性要求很是高,所以要求SNS网站架构要有很强的水平扩展性。服务器
51CTO:在后台语言的选择上,有其余大型SNS站点使用PHP,人人网则选择了Java,使用Java的优点在体现哪些方面?多线程
黄晶老师:Java的优点体如今当项目日渐复杂的时候,能够经过Java良好的OO特性,保持很是好的模块性,在进行网站重构的时候比较方便,在代码量增大的时候也可保持良好的可管理性。架构
51CTO:如今不少大型网站的后台都使用了大量的开源软件,人人网是否也是如此呢?我们的开发团队是否也在开发本身的框架呢?并发
黄晶老师:人人网也使用了大量开源软件,好比MySQL、Memcached、ICE、Hadoop等,同时咱们也根据业务须要研发了本身的框架,好比MVC框架,分布式KV存储系统。框架
51CTO:一个网站在发展过程当中,后台都会经历不断的重构,从初期的校内网、到如今的人人网,网站架构最大的变化在哪?分布式
黄晶老师:从初期的校内网到如今人人网,最大的变化是:不少底层服务都从利用已有开源软件的搭建,变成了根据业务须要,由咱们本身开发专门的服务所代替,这样可以提升资源利用程度,提升整个系统的可用性。memcached
51CTO:咱们知道人人网的用户量很是庞大,在数据库方面,人人网采用了哪一种数据库?除了高性能、可扩展性外,人人网对数据库的需求还有哪些?在整个后台系统架构中,每每数据库的性能也会出现瓶颈,从早期的校内网到如今,咱们对数据库性能的优化方面都作了哪些大的改变?oop
黄晶老师:咱们采用的数据库是MySQL,在需求方面,咱们也很是关注高可用性。早期校内从单数据库,到主从接口,发展到后来垂直拆分,而后水平拆分,而后在每一个节点上实现主-主提升可用性,到异地备份容灾。目前咱们的数据库已经有很是强的水平扩展能力和很是高的可用性。
关于MySQL,51CTO推荐专题:MySQL数据库入门与精通教程
51CTO:数据缓存在后台架构中一样很是重要,在数据库服务器、Web服务器以及二者之间,人人网都采用了哪些缓存手段?
黄晶老师:咱们的数据库用到了部分自身缓存机制,好比尽量利用innodb的pool和MySQL的Query Cache。在中间用到Memcached,以及基于ICE通信框架由咱们本身编写的包含业务逻辑处理能力的缓存服务,在咱们自行开发的分布式KV系统中也会充分利用内存Cache加速。
51CTO:目前国内外也有不少大型站点在使用NoSQL,从功能上来将,其很是适合应用在SNS、微博等站点,人人网是否在考虑使用NoSQL呢?
黄晶老师:对于NoSQL,咱们已经考虑并在逐步试用自行开发的Nuclear分布式KV存储系统。
关于NoSQL,51CTO推荐专题:NoSQL:关系型数据库终结者?
51CTO:上传照片或者图片是SNS网站用户很经常使用的一个功能,对于Web服务器来说,图片是很是消耗资源的,那么目前人人网天天大概有要处理多少张图片?相比较其余数据而言,图片会占用大量存储空间,给服务器带来不小的压力,咱们知道Facebook有着一套本身的图片存储架构,我们人人网在这方面是怎么作的呢?
黄晶老师:如今人人网天天要处理千万张级别的照片数量。咱们使用由C++专门编写的Web服务来处理照片上传和压缩工做。存储是用一套分布式文件存储系统,在小文件不少的状况下,也会采用把小文件聚合为大文件的方式提升性能,这样的作法也便于大量小文件的备份。
51CTO:目前SNS站点都有很强的实时性,用户可以第一时间看到好友都在作什么,像人人网以及Facebook等,还有即时聊天功能,咱们是经过什么样的手段来最大限度的优化每个页面,从而尽量的减小服务器的请求时间,提升用户体验的呢?
黄晶老师:咱们的作法是尽量把数据放在内存中,提升数据存取速度。另外,复杂的页面采用并发机制,多线程同时从多个后台源取数据拼成页面。
51CTO:最后,还想请黄晶老师谈一谈SNS网站后台技术的发展趋势,以及从事SNS后台开发的开发者须要关注那几方面?
黄晶老师:鉴于SNS网站的一些业务特色,在后台技术中,咱们最关注的仍然是高性能,可扩展性,高可用性。而且SNS所提供的服务也在变化中,对于业务的多变,架构要有灵活适应的能力,不然须要提供新服务的时候重构以前的系统工做量很大。相似Google的GFS/Bigtable/MapReduce一系列通用的分布式系统很是优秀,能够支撑不少Google的业务须要。因此在SNS网站架构中也须要一个能灵活应对业务变化的一套健壮的分布式系统。
【51CTO独家特稿,转载请注明原文出处及做者!】