濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 淺析豆瓣網(wǎng)站運(yùn)營的主要技術(shù)模式

淺析豆瓣網(wǎng)站運(yùn)營的主要技術(shù)模式

熱門標(biāo)簽:河北crm外呼系統(tǒng)平臺(tái) 河南語音外呼系統(tǒng)平臺(tái) 百應(yīng)電話機(jī)器人價(jià)值 地圖標(biāo)注不顯示 福州公司外呼系統(tǒng)加盟 南京400電話辦理到易號(hào)網(wǎng) 金蘭灣地圖標(biāo)注app 周口權(quán)威的不封卡電話外呼系統(tǒng) 外呼系統(tǒng)2273649Z空間

豆瓣全部使用python開發(fā)。網(wǎng)站后臺(tái)的搜索引擎基于Twisted, GUI基于Quixote,還用到了cElementTree, MySQL和 PIL,這是豆瓣技術(shù)的基礎(chǔ)。
純粹的技術(shù)原理之外,相關(guān)豆瓣技術(shù)還有三個(gè)核心原則:以用戶為中心、簡(jiǎn)單的前臺(tái)與復(fù)雜的后臺(tái)、快速開發(fā)。

以用戶為中心
Web2.0 改變了一些產(chǎn)品特性的優(yōu)先級(jí)。原來做產(chǎn)品會(huì)把功能性放在首要位置,而可用性的優(yōu)先級(jí)會(huì)往后放。現(xiàn)在則由于要給普通用戶使用,必須要以用戶為中心,肯定要從易用的角度出發(fā)??梢哉f,Ajax技術(shù)的流行,首先解決的也是一個(gè)觀念問題。雖然這時(shí)點(diǎn)擊量無法獲得增長,但是它卻可以給用戶帶來更為便利的網(wǎng)絡(luò)訪問。現(xiàn)在的網(wǎng)站開發(fā)不是為了追求點(diǎn)擊量了,而是為用戶提供需要的功能,滿足他們的需求。
尋找需求以創(chuàng)新,了解需求以完善細(xì)節(jié)
在楊勃看來,對(duì)大部分人來說,書籍、音樂、電影的選擇特別多,于是豆瓣網(wǎng)的方向初步確定,也就是需要發(fā)現(xiàn)和分享。每個(gè)人的口味都不一樣,大家共享之后就會(huì)產(chǎn)生口碑傳遞。“所以,一開始做豆瓣不是為了做一個(gè)網(wǎng)站,而是滿足人們的一個(gè)需求,如果對(duì)用戶沒用,只是新鮮是遠(yuǎn)遠(yuǎn)不夠的。”
現(xiàn)在同一類型的各個(gè)網(wǎng)站,技術(shù)高低對(duì)網(wǎng)站外觀的影響不是特別明顯,但只需要使用一下網(wǎng)站,就會(huì)明白很多差距。原因就在于,創(chuàng)新來自找到需求,細(xì)節(jié)來自了解需求。
 
簡(jiǎn)單的前臺(tái)與復(fù)雜的后臺(tái)
為了最大程度的符合用戶習(xí)慣,簡(jiǎn)單的前臺(tái)界面不代表系統(tǒng)的簡(jiǎn)單。事實(shí)上,正相反,在Web2.0的系統(tǒng)中,后臺(tái)需要做更多的工作。一些表面看起來很簡(jiǎn)單的功能背后需要大量的程序和計(jì)算的支撐。
基于數(shù)學(xué)統(tǒng)計(jì)的推薦引擎
豆瓣就是最具代表性的例子。與大多數(shù)網(wǎng)站不同的是,最早開發(fā)的部分是一套推薦引擎,這是基于數(shù)學(xué)統(tǒng)計(jì)的計(jì)算模型。在用戶點(diǎn)擊、瀏覽以后,這套模型可以自動(dòng)分析出“與其興趣相投的人”,并主動(dòng)地推薦用戶最有可能喜歡的書籍、音樂或者電影。
功能強(qiáng)大但使用簡(jiǎn)單的管理工具
豆瓣是100%動(dòng)態(tài)網(wǎng)站,沒有一個(gè)靜態(tài)的頁面。我們完全可以將其視為一個(gè)個(gè)人管理書籍、音樂、影碟的工具,只是將工具放在網(wǎng)上了?,F(xiàn)在,很多網(wǎng)站抄襲了豆瓣的模式和資源,但僅僅抄襲一個(gè)網(wǎng)站的表面是沒有價(jià)值的。
Web越來越像一個(gè)計(jì)算平臺(tái)。通過各種Web應(yīng)用將計(jì)算機(jī)連接起來,比如需要相冊(cè)時(shí)可以使用Flickr,需要地圖時(shí)調(diào)用Google Map的Api。隨著很多服務(wù)商逐漸將自己的服務(wù)開放出來,每個(gè)網(wǎng)站都可以視為一個(gè)軟件服務(wù)提供商,相互之間的聯(lián)系讓系統(tǒng)越來越復(fù)雜,而這種系統(tǒng)的復(fù)雜并不會(huì)帶來功能使用的繁瑣。
強(qiáng)大的功能、簡(jiǎn)單的使用,這是Web2.0應(yīng)用的必然趨勢(shì)。由豆瓣的應(yīng)用,可以看出發(fā)現(xiàn)聯(lián)系用戶之間的關(guān)系,在后臺(tái)建立導(dǎo)引用戶功能的連接,針對(duì)數(shù)據(jù)量做好方便的存儲(chǔ)和查詢,這就是網(wǎng)站技術(shù)的核心。
 
快速開發(fā)
很難想象,豆瓣擁有5000萬的注冊(cè)用戶,Alexa的流量排名在一千左右,很長的一段時(shí)間內(nèi)卻一直就只有一臺(tái)八千塊錢攢起來的服務(wù)器、一兩個(gè)人的開發(fā)團(tuán)隊(duì)維護(hù)著。
為了適應(yīng)這種規(guī)模,開發(fā)模式需要進(jìn)行改變。這在很多Web2.0的網(wǎng)站中都有所體現(xiàn),有人稱之為簡(jiǎn)單哲學(xué)。為了快速開發(fā),系統(tǒng)設(shè)計(jì)也需要進(jìn)行簡(jiǎn)化。楊勃說,“豆瓣網(wǎng)中間也做過一些變動(dòng),最初還是受原來做企業(yè)系統(tǒng)的影響,結(jié)構(gòu)設(shè)計(jì)的太復(fù)雜,甚至還分了很多層。后來就簡(jiǎn)化了,因?yàn)樘珡?fù)雜之后就難以做快速開發(fā)。”
豆瓣現(xiàn)在采用的是敏捷開發(fā)的模式,這是一個(gè)快速開發(fā)、快速變化的體系,平均每?jī)商炀陀行碌墓δ艹霈F(xiàn)。

系統(tǒng)構(gòu)架延展性強(qiáng)、更新升級(jí)迅速
“Web2.0網(wǎng)站是快速變化的,并不是把所有的功能都在開始階段完全實(shí)現(xiàn)。”楊勃說,“這就要求系統(tǒng)構(gòu)架的可擴(kuò)展性要做的很好。而且必須考慮將來規(guī)模可能帶來的問題。豆瓣網(wǎng)一開始的架構(gòu)設(shè)計(jì)就可以支撐上百萬用戶。”同時(shí),基于Web的開發(fā)省去了客戶端分發(fā)、維護(hù)的成本,因此可以做到“永遠(yuǎn)的 BETA”、隨時(shí)更新和升級(jí)服務(wù)。據(jù)說,豆瓣學(xué)習(xí)對(duì)象Flickr的升級(jí)是以小時(shí)為單位的。

與用戶交互頻繁
Web2.0與用戶的交互也是讓網(wǎng)站快速完善的動(dòng)力。網(wǎng)站運(yùn)行之后,聽取用戶的反饋,指導(dǎo)下一步的應(yīng)用開發(fā)。“豆瓣網(wǎng)有一個(gè)站務(wù)論壇,很多人經(jīng)常發(fā)言提出自己的需求。”比如豆瓣剛開張時(shí),由于每個(gè)人都可以自由創(chuàng)建小組或者參加小組,于是用戶可能會(huì)同時(shí)參加幾十個(gè)小組。但由于很多小組人數(shù)比較少,可能很長時(shí)間才會(huì)有人發(fā)言,于是大家就要求有一個(gè)功能,把所有小組的最新發(fā)言聚合在一起。楊勃很快實(shí)現(xiàn)了這個(gè)功能,事實(shí)也證明非常受歡迎。

技術(shù)人員學(xué)習(xí)能力強(qiáng)
楊勃認(rèn)為,由于是小團(tuán)隊(duì),工作模式就不能是一個(gè)經(jīng)理帶一幫人,而是大家都需要參與編程。而且,對(duì)綜合學(xué)習(xí)能力的要求比較高。“因?yàn)榧夹g(shù)變化很快,現(xiàn)在對(duì)任何技術(shù)再熟悉,經(jīng)驗(yàn)再多,過幾個(gè)月可能又出現(xiàn)了新的技術(shù),因此最重要的是要能夠跟蹤最新的知識(shí)。而且由于最新的Web2.0模式和思想都是從國外發(fā)起的,所以程序員要具有在英文環(huán)境中直接溝通的能力,能夠直接參與到國外的開源項(xiàng)目中,而不是看已經(jīng)翻譯為中文的文檔。”楊勃表示,自己學(xué)習(xí)Python 也是隨豆瓣網(wǎng)開始的。“Python很適合敏捷開發(fā),最初的時(shí)候曾經(jīng)嘗試過使用Ruby,后來由于豆瓣網(wǎng)需要很多后臺(tái)的程序,Python更適合編寫一些后臺(tái)模型程序,最終前臺(tái)也統(tǒng)一為一種語言。”楊勃之前對(duì)MySQL了解很少,但在做豆瓣網(wǎng)的過程中,很快將知識(shí)彌補(bǔ)上來。“現(xiàn)在我們有幾個(gè)數(shù)據(jù)庫都可以做同步,有些內(nèi)容我們還向開源社區(qū)進(jìn)行了回饋。”
豆瓣選用了很多開源產(chǎn)品,楊勃認(rèn)為:“用好開源產(chǎn)品是非常關(guān)鍵的。豆瓣的平臺(tái)是基于Linux,數(shù)據(jù)庫用的是MySQL,除了數(shù)據(jù)挖掘和搜索,其它都是在開源產(chǎn)品之上開發(fā)的。因?yàn)楝F(xiàn)在有很多非常成熟的產(chǎn)品和模塊,沒有必要從頭做,只要有能力了解獲得這方面的知識(shí),都能夠很快在別人的基礎(chǔ)上開發(fā)自己的系統(tǒng)。”


豆瓣是一個(gè)使用Python進(jìn)行開發(fā)的網(wǎng)站
在開發(fā)框架方面,豆瓣主要使用Quixote(一個(gè)輕量級(jí)的Python Web框架,簡(jiǎn)單、高效,代碼簡(jiǎn)潔);后臺(tái)運(yùn)行的Web服務(wù)主要使用Web.py(web.py也是一個(gè)Python的Web框架,簡(jiǎn)單且功能強(qiáng)大)。

豆瓣網(wǎng)可分割成兩大塊:一塊是前端的Web,也就是用戶在瀏覽器訪問的時(shí)候會(huì)觸發(fā)一系列的操作,從數(shù)據(jù)庫拿出數(shù)據(jù),渲染成HTML頁面反饋給用戶,這是前端;另外一塊是后端,在豆瓣有一個(gè)很強(qiáng)的數(shù)據(jù)挖掘團(tuán)隊(duì),每天把用戶產(chǎn)生的數(shù)據(jù)進(jìn)行分析,進(jìn)行組合,然后產(chǎn)生出用戶推薦,然后放在數(shù)據(jù)庫里面,前端會(huì)實(shí)時(shí)的抓取這些數(shù)據(jù)顯示給用戶。

豆瓣(架構(gòu))設(shè)計(jì)現(xiàn)在在WEB這一端主要是用這么幾種技術(shù):前端是nginx和lighttpd,中間是Quixote的Web框架,后面是MySQL以及我們自己開發(fā)的DoubanDB。這些除了Quixote都是一些比較流行的、尖端的技術(shù)。Quixote稍微老一點(diǎn),如果要重新設(shè)計(jì)的話,可能會(huì)在這方面做一些考慮。比如Python社區(qū)中的Django、Pylons等等都是可以考慮的,那么在豆瓣的內(nèi)部的話,我們一般是用web.py,很輕量的一個(gè)Web框架來做,也是非常不錯(cuò)的選擇,它可能需要自己做的事情多一點(diǎn)。

豆瓣現(xiàn)在還沒有達(dá)到數(shù)據(jù)庫分片的程度。最常見的手段是,按照功能分區(qū)。我們會(huì)把數(shù)據(jù)表分成幾個(gè)獨(dú)立的庫,現(xiàn)在是一共有4個(gè)庫。每個(gè)表都是庫的一個(gè)部分,每個(gè)庫會(huì)有主副兩個(gè)。通過這種方式來減輕數(shù)據(jù)庫的壓力,當(dāng)然這個(gè)是現(xiàn)在的方案,再往后的話,表的行數(shù)會(huì)增長,到達(dá)一定的程度后,還要進(jìn)行水平分割,這是肯定的。然后我們現(xiàn)在的技術(shù)方面,在操作數(shù)據(jù)庫之前,首先獲取數(shù)據(jù)庫的游標(biāo),有一個(gè)方法,這個(gè)方法會(huì)干所有的事情,我們以后做的時(shí)候會(huì)從這個(gè)方法中進(jìn)行判斷該從哪取東西。這個(gè)架構(gòu)已經(jīng)在了,只是現(xiàn)在還沒有做這一步而已。

標(biāo)簽:呼和浩特 南京 瀘州 臺(tái)州 撫州 贛州 長治 自貢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析豆瓣網(wǎng)站運(yùn)營的主要技術(shù)模式》,本文關(guān)鍵詞  淺析,豆瓣,網(wǎng)站,運(yùn)營,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析豆瓣網(wǎng)站運(yùn)營的主要技術(shù)模式》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺析豆瓣網(wǎng)站運(yùn)營的主要技術(shù)模式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    平定县| 佳木斯市| 牙克石市| 丹凤县| 安泽县| 华池县| 海城市| 商都县| 延边| 堆龙德庆县| 乃东县| 鄄城县| 德昌县| 牡丹江市| 乌恰县| 林甸县| 闽侯县| 修文县| 桃园县| 上虞市| 博罗县| 大宁县| 平塘县| 永平县| 石柱| 宣汉县| 加查县| 观塘区| 昭通市| 井研县| 资源县| 会泽县| 新乡县| 鄢陵县| 布尔津县| 丰顺县| 农安县| 甘谷县| 曲周县| 常德市| 彭州市|