專訪人人網黃晶:SNS網站后臺架構探秘
原創【51CTO獨家專訪】51CTO在此之前報道過一篇名為《世界***的PHP站點 Facebook后臺技術探秘》的文章,讓我們了解到Facebook是如何保證5億用戶的系統一直保持穩定、可靠運行的。如果說Facebook離我們有些遠的話,那么相信人人網是大家再熟悉不過的一個SNS網站了。(相關閱讀:國內外大型SNS網站后臺架構對比)
人人網首頁
人人網作為國內大型SNS站點的代表,其目前已經擁有真實注冊用戶超過7000萬、PV達到了4億、日登錄2200萬人次。面對如此龐大的訪問量,人人網的后臺架構是怎樣的一番景象呢?關于此,51CTO獨家專訪了現任人人網產品技術高級總監黃晶老師。
人人網產品技術高級總監黃晶老師
在今年4月24日召開的Qcon 2010技術大會上,51CTO也曾對黃晶老師進行過采訪,詳情請閱讀《51CTO專訪人人網黃晶:WEB開發需要隨需應變》
51CTO:作為國內大型SNS站點的代表,我們知道人人網后臺主要采用Java語言編寫,同其他形式的站點相比,SNS站點在網站架構方面有什么樣的特點?
黃晶老師:SNS網站用戶數據量龐大且關系復雜,對實時性要求非常高,因此要求SNS網站架構要有很強的水平擴展性。
51CTO:在后臺語言的選擇上,有其他大型SNS站點使用PHP,人人網則選擇了Java,使用Java的優勢在體現哪些方面?
黃晶老師:Java的優勢體現在當項目日漸復雜的時候,可以通過Java良好的OO特性,保持非常好的模塊性,在進行網站重構的時候比較方便,在代碼量增大的時候也可保持良好的可管理性。
51CTO:現在很多大型網站的后臺都使用了大量的開源軟件,人人網是否也是如此呢?咱們的開發團隊是否也在開發自己的框架呢?
黃晶老師:人人網也使用了大量開源軟件,比如MySQL、Memcached、ICE、Hadoop等,同時我們也根據業務需要研發了自己的框架,比如MVC框架,分布式KV存儲系統。
#p#
51CTO:一個網站在發展過程中,后臺都會經歷不斷的重構,從初期的校內網、到現在的人人網,網站架構***的變化在哪?
黃晶老師:從初期的校內網到現在人人網,***的變化是:很多底層服務都從利用已有開源軟件的搭建,變成了根據業務需要,由我們自己開發專門的服務所代替,這樣能夠提高資源利用程度,提高整個系統的可用性。
51CTO:我們知道人人網的用戶量非常龐大,在數據庫方面,人人網采用了哪種數據庫?除了高性能、可擴展性外,人人網對數據庫的需求還有哪些?在整個后臺系統架構中,往往數據庫的性能也會出現瓶頸,從早期的校內網到現在,我們對數據庫性能的優化方面都做了哪些大的改變?
黃晶老師:我們采用的數據庫是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獨家特稿,轉載請注明原文出處及作者!】
【編輯推薦】