激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

站長之家,中國草根站長新聞、建站經驗、素材資源交流平臺!
分類導航

站長新聞|網站運營|建站經驗|網站優化|站長資源|站長源碼|

服務器之家 - 站長之家 - 建站經驗 - 解析豆瓣的網站建設技術架構

解析豆瓣的網站建設技術架構

2020-06-22 20:16infoq洪強寧 建站經驗

這篇文章主要介紹了解析豆瓣的網站建設技術架構,豆瓣除了作為國內的Python使用大戶,在數據庫和集群方面的架設同樣頗具亮點,需要的朋友可以參考下

解析豆瓣的網站建設技術架構

豆瓣整個基礎架構可以粗略的分為在線和離線兩大塊。在線的部分和大部分網站類似:前面用LVS做HA,用Nginx做反向代理,形成負載均衡的一層;應用層主要是做運算,將運算結果返回給前面的用戶,DAE平臺是這兩年建起來的,現在大部分豆瓣的應用基本都跑在DAE上面了;應用后面的基礎服務也跟其他網站差不多,MySQL、memcached、redis、beanstalkd,不一樣的是NoSQL的選擇——BeansDB,這是我們在幾年前開源的KV數據庫,也是國內比較早開源的KV數據庫。


豆瓣的技術架構與主要組件

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

除了使用開源項目,豆瓣也根據自身需要自主研發或實現了一些產品,比較有特色的如DAE、DPark等等。

DAE全名Douban Application Engine,顧名思義它是一個類似于GAE、SAE的內部PaaS系統。使用這樣的PaaS有很多好處,比如第三方庫數量豐富并且支持多個版本并存、資源配置靈活等等,能夠為工程師省去很多不必要的工作。

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

BeansDB項目可以說是一個簡化版的AWS DynamoDB,該項目在2008年啟動,2009年開源,第?版使?tokyo cabinet作為存儲引擎,2010年使?bitcask存儲格式重寫了存儲引擎,性能更好。BeansDB對key做哈希運算找到節點來實現分布和冗余, 一個寫操作會寫好幾個節點,而現在的配置是寫三份讀一份。BeansDB主要的特點是支持海量KV數據庫——相比Redis這種支持幾十個G到幾百個G的內存KV數據庫,BeansDB可以支持到上百T的數據。另外BeansDB最大的好處就是運維很簡單,性能、可用性、擴容都很好,也實現了最終一致性。
解析豆瓣的網站建設技術架構

BeansDB中間的Proxy是用Go語言寫的,也是一個開源的組件。整體來說BeansDB的設計結構比較簡單,相比Redis那種有多種value 類型的方式,BeansDB的Value比較簡單一些。

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

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

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

DPark顧名思義是Spark的Python實現,不過現在已經跟Spark越來越不一樣了。和 Hadoop 相比,Spark可以使用內存做為緩存加速分布式計算,DPark繼承了這個優點,這對于大規模數據的迭代計算非常有用。在豆瓣的應用場景下,因為我們的離線計算很多是推薦算法計算,這種計算涉及大量的迭代算法,如果每次計算的結果都入磁盤再在下一輪計算加載,那性能是很差的,所以DPark能夠大幅提升性能。另外,因為DPark的編寫使用了函數式語言的特點,所以可以寫的非常簡潔:
解析豆瓣的網站建設技術架構

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久夜草 | 91网站链接 | 久久久看| 色中射 | 久久亚洲美女视频 | 久久久一区二区 | 亚洲国产成人久久一区www妖精 | 久久国产精品二国产精品 | fc2成人免费人成在线观看播放 | 国产成视频在线观看 | 深夜视频福利 | 看91视频 | 欧美一级一片 | 国产精品99久久久久久宅女 | 九九热视频在线免费观看 | 美国av在线免费观看 | 亚洲国产精品久久久久 | 精品一区二区免费 | 在线免费av观看 | 精品一区二区三区不卡 | 国产美女一区二区在线观看 | 国产成人羞羞视频在线 | 538在线精品 | 国产自91精品一区二区 | 宅男噜噜噜66国产在线观看 | 久久久aa | 欧美国产日韩在线观看成人 | 国产一区二区高清在线 | 欧美精品黄色 | 国产亚洲精品久久久久久久久久 | 国产黄色网页 | 一区二区免费网站 | 成年人性视频 | qyl在线视频精品免费观看 | 九九热在线视频观看 | 国产色视频一区 | 久久久久久久久久久久久国产精品 | 欧美天堂一区 | 黄污网址| 操穴视频 | 欧美精品一级 |