人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

解析豆瓣的網(wǎng)站建設(shè)技術(shù)架構(gòu)

發(fā)布日期:2021-12-24 04:36 | 文章來源:CSDN

豆瓣整個(gè)基礎(chǔ)架構(gòu)可以粗略的分為在線和離線兩大塊。在線的部分和大部分網(wǎng)站類似:前面用LVS做HA,用Nginx做反向代理,形成負(fù)載均衡的一層;應(yīng)用層主要是做運(yùn)算,將運(yùn)算結(jié)果返回給前面的用戶,DAE平臺(tái)是這兩年建起來的,現(xiàn)在大部分豆瓣的應(yīng)用基本都跑在DAE上面了;應(yīng)用后面的基礎(chǔ)服務(wù)也跟其他網(wǎng)站差不多,MySQL、memcached、redis、beanstalkd,不一樣的是NoSQL的選擇——BeansDB,這是我們?cè)趲啄昵伴_源的KV數(shù)據(jù)庫,也是國內(nèi)比較早開源的KV數(shù)據(jù)庫。


豆瓣的技術(shù)架構(gòu)與主要組件

豆瓣作為一個(gè)早期就選擇以Python為主要編程語言的公司,網(wǎng)站所使用到的技術(shù)很多都與Python相關(guān),包括主要框架quixote、自行實(shí)現(xiàn)的DPark等等。在其它技術(shù)的選擇上,并沒有太大不同:nginx、MySQL、memcached、BeansDB、redis……都是知名開源項(xiàng)目。在這些開源項(xiàng)目之上,豆瓣根據(jù)自己產(chǎn)品的特性,針對(duì)性地做了配置與部署設(shè)置。

除了使用開源項(xiàng)目,豆瓣也根據(jù)自身需要自主研發(fā)或?qū)崿F(xiàn)了一些產(chǎn)品,比較有特色的如DAE、DPark等等。

DAE全名Douban Application Engine,顧名思義它是一個(gè)類似于GAE、SAE的內(nèi)部PaaS系統(tǒng)。使用這樣的PaaS有很多好處,比如第三方庫數(shù)量豐富并且支持多個(gè)版本并存、資源配置靈活等等,能夠?yàn)楣こ處熓∪ズ芏嗖槐匾墓ぷ鳌?/p>

BeansDB是DAE中非常重要的一個(gè)組件,設(shè)計(jì)思想源于亞馬遜的Dynamo,但是簡(jiǎn)化了Dynamo的一些復(fù)雜之處。BeansDB主要應(yīng)用于小型文本和中型的圖片、音頻,它們的共同特點(diǎn)在于寫次數(shù)特別少,這也正是BeansDB所擅長的領(lǐng)域。
DPark類似于Spark,是豆瓣用Python實(shí)現(xiàn)Map-Reduce類似框架。雖然Python的性能低于基于JVM的Clojure,但這樣做避免了程序員程序員進(jìn)入不熟悉的領(lǐng)域,而且豆瓣使用開源項(xiàng)目的原則是:如果無法完全掌握,寧可不用。“此外將Spark移植到Python上也很簡(jiǎn)單,基本上是一對(duì)一的翻譯。

BeansDB項(xiàng)目可以說是一個(gè)簡(jiǎn)化版的AWS DynamoDB,該項(xiàng)目在2008年啟動(dòng),2009年開源,第⼀版使⽤tokyo cabinet作為存儲(chǔ)引擎,2010年使⽤bitcask存儲(chǔ)格式重寫了存儲(chǔ)引擎,性能更好。BeansDB對(duì)key做哈希運(yùn)算找到節(jié)點(diǎn)來實(shí)現(xiàn)分布和冗余, 一個(gè)寫操作會(huì)寫好幾個(gè)節(jié)點(diǎn),而現(xiàn)在的配置是寫三份讀一份。BeansDB主要的特點(diǎn)是支持海量KV數(shù)據(jù)庫——相比Redis這種支持幾十個(gè)G到幾百個(gè)G的內(nèi)存KV數(shù)據(jù)庫,BeansDB可以支持到上百T的數(shù)據(jù)。另外BeansDB最大的好處就是運(yùn)維很簡(jiǎn)單,性能、可用性、擴(kuò)容都很好,也實(shí)現(xiàn)了最終一致性。

BeansDB中間的Proxy是用Go語言寫的,也是一個(gè)開源的組件。整體來說BeansDB的設(shè)計(jì)結(jié)構(gòu)比較簡(jiǎn)單,相比Redis那種有多種value 類型的方式,BeansDB的Value比較簡(jiǎn)單一些。

在豆瓣內(nèi)部建立了兩個(gè)不同的BeansDB集群,一個(gè)是doubandb,一個(gè)是doubanfs,分別針對(duì)不同的場(chǎng)景。doubandb主要存儲(chǔ)小型文本數(shù)據(jù),如影評(píng)、用戶個(gè)人介紹、帖子內(nèi)容等,這樣的好處是可以大大降低我們對(duì)MySQL的性能依賴,算是給MySQL減負(fù);doubanfs主要存放圖片和音頻等中型數(shù)據(jù)。

DAE可以說是基于很多以前積累的、舊的組件做起來的。我們做的這種對(duì)內(nèi)的PaaS,相比對(duì)外的PaaS而言做了很多簡(jiǎn)化,尤其是安全方面如應(yīng)用間隔離、權(quán)限管理方面,我們都不用像公有云那樣花大量精力去做,所以工作量其實(shí)還好。DAE現(xiàn)在在計(jì)劃開源,當(dāng)然它現(xiàn)在只支持Python應(yīng)用。以后我們也許會(huì)讓DAE支持Go語言。

上面是在線的部分,對(duì)高可用性和低時(shí)延有較大要求。離線部分則包括數(shù)據(jù)挖掘、數(shù)據(jù)分析等,技術(shù)組件分別是海量分布式文件系統(tǒng)MooseFS,這個(gè)文件系統(tǒng)的結(jié)構(gòu)類似HDFS,用C語言編寫,其好處在于FUSE模塊實(shí)現(xiàn)的比較好,用文件系統(tǒng)就可以直接進(jìn)行操作,而不需要專門的命令,可以支持的數(shù)據(jù)量也很大。另外就是自己開發(fā)的分布式計(jì)算平臺(tái)DPark。

DPark顧名思義是Spark的Python實(shí)現(xiàn),不過現(xiàn)在已經(jīng)跟Spark越來越不一樣了。和 Hadoop 相比,Spark可以使用內(nèi)存做為緩存加速分布式計(jì)算,DPark繼承了這個(gè)優(yōu)點(diǎn),這對(duì)于大規(guī)模數(shù)據(jù)的迭代計(jì)算非常有用。在豆瓣的應(yīng)用場(chǎng)景下,因?yàn)槲覀兊碾x線計(jì)算很多是推薦算法計(jì)算,這種計(jì)算涉及大量的迭代算法,如果每次計(jì)算的結(jié)果都入磁盤再在下一輪計(jì)算加載,那性能是很差的,所以DPark能夠大幅提升性能。另外,因?yàn)镈Park的編寫使用了函數(shù)式語言的特點(diǎn),所以可以寫的非常簡(jiǎn)潔:

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部