【51CTO獨(dú)家專訪】51CTO在此之前報(bào)道過一篇名為《世界最大的PHP站點(diǎn) Facebook后臺(tái)技術(shù)探秘》的文章,讓我們了解到Facebook是如何保證5億用戶的系統(tǒng)一直保持穩(wěn)定、可靠運(yùn)行的。如果說Facebook離我們有些遠(yuǎn)的話,那么相信人人網(wǎng)是大家再熟悉不過的一個(gè)SNS網(wǎng)站了。
人人網(wǎng)作為國(guó)內(nèi)大型SNS站點(diǎn)的代表,其目前已經(jīng)擁有真實(shí)注冊(cè)用戶超過7000萬、PV達(dá)到了4億、日登錄2200萬人次。面對(duì)如此龐大的訪問量,人人網(wǎng)的后臺(tái)架構(gòu)是怎樣的一番景象呢?關(guān)于此,51CTO獨(dú)家專訪了現(xiàn)任人人網(wǎng)產(chǎn)品技術(shù)高級(jí)總監(jiān)黃晶老師。
人人網(wǎng)產(chǎn)品技術(shù)高級(jí)總監(jiān)黃晶老師
在今年4月24日召開的Qcon 2010技術(shù)大會(huì)上,51CTO也曾對(duì)黃晶老師進(jìn)行過采訪,詳情請(qǐng)閱讀《51CTO專訪人人網(wǎng)黃晶:WEB開發(fā)需要隨需應(yīng)變》
51CTO:作為國(guó)內(nèi)大型SNS站點(diǎn)的代表,我們知道人人網(wǎng)后臺(tái)主要采用Java語言編寫,同其他形式的站點(diǎn)相比,SNS站點(diǎn)在網(wǎng)站架構(gòu)方面有什么樣的特點(diǎn)?
黃晶老師:SNS網(wǎng)站用戶數(shù)據(jù)量龐大且關(guān)系復(fù)雜,對(duì)實(shí)時(shí)性要求非常高,因此要求SNS網(wǎng)站架構(gòu)要有很強(qiáng)的水平擴(kuò)展性。
51CTO:在后臺(tái)語言的選擇上,有其他大型SNS站點(diǎn)使用PHP,人人網(wǎng)則選擇了Java,使用Java的優(yōu)勢(shì)在體現(xiàn)哪些方面?
黃晶老師:Java的優(yōu)勢(shì)體現(xiàn)在當(dāng)項(xiàng)目日漸復(fù)雜的時(shí)候,可以通過Java良好的OO特性,保持非常好的模塊性,在進(jìn)行網(wǎng)站重構(gòu)的時(shí)候比較方便,在代碼量增大的時(shí)候也可保持良好的可管理性。
51CTO:現(xiàn)在很多大型網(wǎng)站的后臺(tái)都使用了大量的開源軟件,人人網(wǎng)是否也是如此呢?咱們的開發(fā)團(tuán)隊(duì)是否也在開發(fā)自己的框架呢?
黃晶老師:人人網(wǎng)也使用了大量開源軟件,比如MySQL、Memcached、ICE、Hadoop等,同時(shí)我們也根據(jù)業(yè)務(wù)需要研發(fā)了自己的框架,比如MVC框架,分布式KV存儲(chǔ)系統(tǒng)。
51CTO:一個(gè)網(wǎng)站在發(fā)展過程中,后臺(tái)都會(huì)經(jīng)歷不斷的重構(gòu),從初期的校內(nèi)網(wǎng)、到現(xiàn)在的人人網(wǎng),網(wǎng)站架構(gòu)最大的變化在哪?
黃晶老師:從初期的校內(nèi)網(wǎng)到現(xiàn)在人人網(wǎng),最大的變化是:很多底層服務(wù)都從利用已有開源軟件的搭建,變成了根據(jù)業(yè)務(wù)需要,由我們自己開發(fā)專門的服務(wù)所代替,這樣能夠提高資源利用程度,提高整個(gè)系統(tǒng)的可用性。
51CTO:我們知道人人網(wǎng)的用戶量非常龐大,在數(shù)據(jù)庫方面,人人網(wǎng)采用了哪種數(shù)據(jù)庫?除了高性能、可擴(kuò)展性外,人人網(wǎng)對(duì)數(shù)據(jù)庫的需求還有哪些?在整個(gè)后臺(tái)系統(tǒng)架構(gòu)中,往往數(shù)據(jù)庫的性能也會(huì)出現(xiàn)瓶頸,從早期的校內(nèi)網(wǎng)到現(xiàn)在,我們對(duì)數(shù)據(jù)庫性能的優(yōu)化方面都做了哪些大的改變?
黃晶老師:我們采用的數(shù)據(jù)庫是MySQL,在需求方面,我們也非常關(guān)注高可用性。早期校內(nèi)從單數(shù)據(jù)庫,到主從接口,發(fā)展到后來垂直拆分,然后水平拆分,然后在每個(gè)節(jié)點(diǎn)上實(shí)現(xiàn)主-主提高可用性,到異地備份容災(zāi)。目前我們的數(shù)據(jù)庫已經(jīng)有非常強(qiáng)的水平擴(kuò)展能力和非常高的可用性。
關(guān)于MySQL,51CTO推薦專題:MySQL數(shù)據(jù)庫入門與精通教程
51CTO:數(shù)據(jù)緩存在后臺(tái)架構(gòu)中同樣非常重要,在數(shù)據(jù)庫服務(wù)器、Web服務(wù)器以及兩者之間,人人網(wǎng)都采用了哪些緩存手段?
黃晶老師:我們的數(shù)據(jù)庫用到了部分自身緩存機(jī)制,比如盡可能利用innodb的pool和MySQL的 Query Cache。在中間用到Memcached,以及基于ICE通訊框架由我們自己編寫的包含業(yè)務(wù)邏輯處理能力的緩存服務(wù),在我們自行開發(fā)的分布式KV系統(tǒng)中 也會(huì)充分利用內(nèi)存Cache加速。
推薦閱讀:分布式緩存系統(tǒng)memcached簡(jiǎn)介與實(shí)踐
51CTO:目前國(guó)內(nèi)外也有很多大型站點(diǎn)在使用NoSQL,從功能上來將,其非常適合應(yīng)用在SNS、微博等站點(diǎn),人人網(wǎng)是否在考慮使用NoSQL呢?
黃晶老師:對(duì)于NoSQL,我們已經(jīng)考慮并在逐步試用自行開發(fā)的Nuclear分布式KV存儲(chǔ)系統(tǒng)。
關(guān)于NoSQL,51CTO推薦專題:NoSQL:關(guān)系型數(shù)據(jù)庫終結(jié)者?
51CTO:上傳照片或者圖片是SNS網(wǎng)站用戶很常用的一個(gè)功能,對(duì)于Web服務(wù)器來講,圖片是非常消耗資源的,那么目前人人網(wǎng)每天大概有要處理多少張圖片?相比較其他數(shù)據(jù)而言,圖片會(huì)占用大量存儲(chǔ)空間,給服務(wù)器帶來不小的壓力,我們知道Facebook有著一套自己的圖片存儲(chǔ)架構(gòu),咱們?nèi)巳司W(wǎng)在這方面是怎么做的呢?
黃晶老師:現(xiàn)在人人網(wǎng)每天要處理千萬張級(jí)別的照片數(shù)量。我們使用由C++專門編寫的Web服務(wù)來處理照片上傳和壓縮工作。存儲(chǔ)是用一套分布式文件存儲(chǔ)系統(tǒng),在小文件很多的情況下,也會(huì)采用把小文件聚合為大文件的方式提高性能,這樣的做法也便于大量小文件的備份。
51CTO:目前SNS站點(diǎn)都有很強(qiáng)的實(shí)時(shí)性,用戶能夠第一時(shí)間看到好友都在做什么,像人人網(wǎng)以及Facebook等,還有即時(shí)聊天功能,我們是通過什么樣的手段來最大限度的優(yōu)化每一個(gè)頁面,從而盡可能的減少服務(wù)器的請(qǐng)求時(shí)間,提高用戶體驗(yàn)的呢?
黃晶老師:我們的做法是盡可能把數(shù)據(jù)放在內(nèi)存中,提高數(shù)據(jù)存取速度。另外,復(fù)雜的頁面采用并發(fā)機(jī)制,多線程同時(shí)從多個(gè)后臺(tái)源取數(shù)據(jù)拼成頁面。
51CTO:最后,還想請(qǐng)黃晶老師談一談SNS網(wǎng)站后臺(tái)技術(shù)的發(fā)展趨勢(shì),以及從事SNS后臺(tái)開發(fā)的開發(fā)者需要關(guān)注那幾方面?
黃晶老師:鑒于SNS網(wǎng)站的一些業(yè)務(wù)特點(diǎn),在后臺(tái)技術(shù)中,我們最關(guān)注的仍然是高性能,可擴(kuò)展性,高可用性。并且 SNS所提供的服務(wù)也在變化中,對(duì)于業(yè)務(wù)的多變,架構(gòu)要有靈活適應(yīng)的能力,否則需要提供新服務(wù)的時(shí)候重構(gòu)之前的系統(tǒng)工作量很大。類似Google的 GFS/Bigtable/MapReduce一系列通用的分布式系統(tǒng)非常優(yōu)秀,可以支撐很多Google的業(yè)務(wù)需要。所以在SNS網(wǎng)站架構(gòu)中也需要一個(gè) 能靈活應(yīng)對(duì)業(yè)務(wù)變化的一套健壯的分布式系統(tǒng)。
聯(lián)系客服