揭秘:Quora用了哪些技術(shù) ?
Quora網(wǎng)站由Facebook前雇員查理·切沃(Charlie Cheever)和亞當(dāng)·安捷羅(Adam D' Angelo)于 2008年創(chuàng)辦,是一款問答SNS 產(chǎn)品,目前擁有11名雇員,共融資超過1100萬美元,產(chǎn)品還未上線,就被估值8000萬美元。文中闡述了Quora的技術(shù)架構(gòu),記錄一些值得關(guān)注的信息。
文章內(nèi)容如下:
使用云計算服務(wù)
Quora大量使用Amazon EC2 與 S3服務(wù);操作系統(tǒng)部署的是Ubuntu Linux,易于部署和管理;靜態(tài)內(nèi)容用Cloudfront.服務(wù)分發(fā),圖片先傳到EC2服務(wù)器,使用Pyhon S3 API 處理后后傳到S3。
從開始就使用云計算服務(wù)的的好處是節(jié)省了大量人工維護(hù)硬件服務(wù)器的成本,當(dāng)然這個做法在咱這片土地上不太可行。
(refer:Copyright)
Web層與CMS
HAProxy作為前端負(fù)載均衡服務(wù)器,反向代理服務(wù)器是Nginx,Nginx后面則是Pylons(Pylons + Paste),承擔(dān)動態(tài)Web請求。
Webnode2與LiveNode這兩個內(nèi)部系統(tǒng)承擔(dān)創(chuàng)建、管理內(nèi)容的重任,Webnode2生成HTML、CSS與JavaScript,并且與LiveNode輕度耦合。LiveNode的作用用以顯示W(wǎng)eb頁面內(nèi)容。用Python、C++與JavaScript寫的。特別提到用到了jQuery與Cython。LiveNode有可能開源。
為什么用Python?
前面已經(jīng)提到了一些Python相關(guān)的技術(shù)組件。有意思的是從Facebook出來的團(tuán)隊居然用Python作為主要開發(fā)語言。Quora對此有所解釋:Facebook選擇PHP也并非是最佳選擇,而是有歷史原因。Quora技術(shù)團(tuán)隊在考察了多個語言之后選擇的Python,當(dāng)然理由有一大堆,總體看來,并非很激進(jìn)。
通信處理
后端通信使用的是Facebook開源出來的Thrift,除了開發(fā)接口簡單之外,可能更為熟悉也是一個因素吧:)Comet服務(wù)器使用的是Tornado,用以處理Long polling以及Push 更新(不知道知乎用的什么?),Tornado是前FriendFeed技術(shù)團(tuán)隊開源的產(chǎn)品。
實時搜索
因為Sphinx不能滿足實時性方面的要求,Quora啟用了自己開發(fā)的搜索引擎,只使用了Thrift與Python Unicode庫,此外沒有用別的。Quora的搜索比較特別,因為要對輸入內(nèi)容做關(guān)聯(lián)并且要做有效提示,所以需要提供更好的前綴索引(Prefix indexing)功能。
Quora搜索的實現(xiàn)還是挺有技術(shù)含量的,對后端的查詢請求壓力也不小(或許當(dāng)前的并發(fā)請求量還沒那么大)。對這個場景,做相關(guān)開發(fā)的朋友不妨仔細(xì)研究一下。如果大體框架類似,那么決定最后生出的因素很可能是那些細(xì)節(jié)。
數(shù)據(jù)持久層
大量使用MySQL作為存儲方案,Memcached作Cache層。沒有使用當(dāng)前比較火爆的NoSQL相關(guān)產(chǎn)品。Quora這樣做有自己的理由,用戶量級沒有達(dá)到百萬的SNS站點(diǎn)完全沒必要用NoSQL的東西?;蛟S以后Quora也會啟用。
創(chuàng)始人查理·奇弗(Charlie Cheever)與亞當(dāng)·德安杰洛(Adam D'Angelo)之前都在Facebook,所以,Quora的技術(shù)還真有不少Facebook的基因。Quora的團(tuán)隊規(guī)模并不大,做技術(shù)的估計十余人而已,這么緊湊的團(tuán)隊利用了這么多的技術(shù)與產(chǎn)品,可見很多人都是多面手了。這是國內(nèi)技術(shù)團(tuán)隊需要向國外同行學(xué)習(xí)的地方。
EOF
這只是一篇概要性的描述,如果要知道一些更為細(xì)節(jié)的東西,請看Quora上的相關(guān)評論,上文中已經(jīng)給出相關(guān)鏈接。
【編輯推薦】