主頁(yè) > 知識(shí)庫(kù) > 大型網(wǎng)站的實(shí)例分析 掌握構(gòu)建大型網(wǎng)站的架構(gòu)

大型網(wǎng)站的實(shí)例分析 掌握構(gòu)建大型網(wǎng)站的架構(gòu)

熱門(mén)標(biāo)簽:桐城電銷(xiāo)機(jī)器人 辦理400電話(huà)服務(wù) 地圖標(biāo)注自己位置 北京400電話(huà)怎么申請(qǐng)開(kāi)通 曉呼電話(huà)機(jī)器人 南寧外呼電銷(xiāo)機(jī)器人供應(yīng)商 ai機(jī)器人電銷(xiāo)流程圖 電話(huà)機(jī)器人轉(zhuǎn)換率大概多少 電銷(xiāo)平臺(tái)外呼系統(tǒng)軟件報(bào)價(jià)

學(xué)習(xí)和掌握構(gòu)建大型網(wǎng)站的架構(gòu),需要匯總散落的文章,梳理零散的內(nèi)容。做好這項(xiàng)工作很有意義,但是也比較困難。我們的體會(huì)是,不妨抓住以下幾個(gè)主題,逐個(gè)分析大型網(wǎng)站的實(shí)例,然后橫向比較。

1. Database

數(shù)據(jù)存儲(chǔ)歷來(lái)是麻煩,尤其是需要存儲(chǔ)海量數(shù)據(jù)的時(shí)候,往往單個(gè)數(shù)據(jù)庫(kù)容量不夠,甚至一個(gè)數(shù)據(jù)庫(kù)集群也不夠。常見(jiàn)的解決辦法是分割,譬如按用戶(hù)ID把海量數(shù)據(jù)分割成若干塊,每塊存儲(chǔ)到一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)里去。但是分割的做法降低了join操作的效率。

Google Bigtable的效率如何?好處是什么,缺陷是什么?Bigtable對(duì)什么樣的情景最適用?根據(jù)Bigtable原理實(shí)現(xiàn)的開(kāi)源軟件,Hadoop/HBase的運(yùn)行效率如何?

2. Cache

用戶(hù)訪(fǎng)問(wèn)網(wǎng)站時(shí),通常讀的操作比寫(xiě)的操作更頻繁。為了提高讀的操作,不妨把相關(guān)內(nèi)容緩存到內(nèi)存里,減少Disk IO的消耗。

MemCached 最近大熱,Wikipedia, YouTube, Digg, Twitter等等大型網(wǎng)站都在用MemCached作為緩存工具。SquidCache和Varnish等等工具,也與緩存沾邊。Twitter的做法是把MemCached和Varnish結(jié)合起來(lái),同時(shí)使用。什么樣的內(nèi)容,應(yīng)該用什么樣的緩存工具?不同的工具間如何協(xié)調(diào)?各大網(wǎng)站的實(shí)際運(yùn)行的結(jié)果,有哪些經(jīng)驗(yàn)和教訓(xùn)?

3. File System

有些內(nèi)容,既沒(méi)必要存放在數(shù)據(jù)庫(kù)里,也不適合存放在緩存中,譬如log 和images。在這種情況下,我們需要文件系統(tǒng)。當(dāng)有海量?jī)?nèi)容需要存放在文件系統(tǒng)中時(shí),我們需要使用分布式文件系統(tǒng)。Google File System對(duì)于什么樣的情景適用,什么樣的情景不適用?分布式文件系統(tǒng)常常需要相應(yīng)的鎖機(jī)制,保證并發(fā)的讀寫(xiě)操作不相互干擾。Chubby有什么好處?什么情形下不適用?

據(jù)說(shuō)MogileFS更適合存儲(chǔ)大量的,但是單體尺寸不大的文件,譬如images。而Google File System更適合存放大尺寸但是數(shù)量不多的文件。有沒(méi)有可能把小尺寸的多個(gè)文件,合并成一個(gè)大文件,然后存儲(chǔ)到Google File System中去。在這種情況下,比較MogileFS與Google FS的性能,是否有高下之分?

4. Thread Management

一套工序通常由若干任務(wù)組成。多線(xiàn)程的辦法是由一根線(xiàn)程全權(quán)負(fù)責(zé)整套工序的操作。另外一個(gè)辦法是把工序斬成幾段,每一段由一根或幾根線(xiàn)程負(fù)責(zé),這種辦法稱(chēng)為工作臺(tái)。

常見(jiàn)的是多線(xiàn)程的辦法。但是工作臺(tái)的做法有利于集中計(jì)算資源處理繁重的任務(wù),避免瓶頸的出現(xiàn)。但是缺陷是需要在不同線(xiàn)程之間,傳遞記錄中間狀態(tài)的數(shù)據(jù)。什么樣的情形適合用多線(xiàn)程,什么時(shí)候用工作臺(tái)?

5. Scheduler

同一個(gè)網(wǎng)站通常會(huì)提供多種服務(wù),不同的服務(wù)需要調(diào)用不同的業(yè)務(wù)邏輯。有些業(yè)務(wù)邏輯可以在同一臺(tái)服務(wù)器上完成,但是當(dāng)業(yè)務(wù)邏輯復(fù)雜的時(shí)候,需要調(diào)用多臺(tái)服務(wù)器合作完成。不同服務(wù)的受眾對(duì)象不同,流量也不同,不同時(shí)段的流量也不同,同一時(shí)段不同服務(wù)的流量也不同,所以需要?jiǎng)討B(tài)地分配計(jì)算資源。這是 scheduler的工作。

Scheduler給不同服務(wù)器分配工作時(shí),最簡(jiǎn)單的辦法是啟動(dòng)預(yù)先安裝在該服務(wù)器上的相關(guān)程序。由于不能保證每個(gè)程序都十分完美,當(dāng)一個(gè)程序發(fā)生錯(cuò)誤時(shí),應(yīng)當(dāng)避免整個(gè)服務(wù)器因此而崩潰,影響其它工作的正常進(jìn)行。是否需要?jiǎng)佑胿irtual machine,實(shí)現(xiàn)各個(gè)不同工作之間相互隔絕?

6. Signal Flow and Data Flow

大型網(wǎng)站后臺(tái)系統(tǒng)經(jīng)常由眾多服務(wù)器組成,服務(wù)器與服務(wù)器之間時(shí)不時(shí)會(huì)發(fā)生數(shù)據(jù)交換,譬如Web Server解析完用戶(hù)請(qǐng)求后,把請(qǐng)求轉(zhuǎn)發(fā)給某一臺(tái)App Server,這一臺(tái)App Server完成了部分工作后,把中間數(shù)據(jù)轉(zhuǎn)發(fā)給下一臺(tái)App Server。而第二臺(tái)App Server完成任務(wù)后,整個(gè)工作就結(jié)束了,結(jié)果應(yīng)該返回給Web Server。

問(wèn)題是如何讓第一臺(tái)App Server如何知道應(yīng)該把中間結(jié)果給第二臺(tái)App Server,而第二臺(tái)App Server又如何知道它的目的地是Web Server?一個(gè)比較有效率的做法,是區(qū)別數(shù)據(jù)流和控制流。Server與Server之間常設(shè)通道,專(zhuān)供控制流使用,傳遞指令去控制數(shù)據(jù)流的發(fā)送。數(shù)據(jù)流不占用控制流通道,只有在需要時(shí),才建立數(shù)據(jù)流的通道。

控制流和數(shù)據(jù)流的組織,需要結(jié)合具體的業(yè)務(wù)邏輯,才能優(yōu)化設(shè)計(jì),減少帶寬消耗,縮短數(shù)據(jù)傳輸?shù)臅r(shí)間。

7. Instrumentation

網(wǎng)站后臺(tái)各個(gè)部分是否運(yùn)轉(zhuǎn)正常,哪里是瓶頸,哪里空閑。這些都需要實(shí)時(shí)監(jiān)控。不僅及時(shí)避免整個(gè)后臺(tái)系統(tǒng)的崩潰,而且可以分析各個(gè)部分運(yùn)行的規(guī)律,從而找到優(yōu)化系統(tǒng)的途徑。

問(wèn)題是,應(yīng)該選用什么樣的監(jiān)控工具,才能夠盡量減少對(duì)系統(tǒng)程序的干擾,同時(shí)提供有價(jià)值的信息?

8. Anti-abuse

通常網(wǎng)站面對(duì)的是形形色色的用戶(hù),絕大多數(shù)用戶(hù)的行為是友好的,但是不排除少數(shù)用戶(hù)蓄意惡作劇。如果事先沒(méi)有設(shè)計(jì)防范措施,少數(shù)惡意用戶(hù)的胡作非為,會(huì)干擾其他用戶(hù)享受正常的服務(wù)。

問(wèn)題是,如何防范并且及時(shí)制止惡意行為的發(fā)生?

9. Exception Handling

不論預(yù)先設(shè)想有多周密,實(shí)際運(yùn)行時(shí),總會(huì)遇到這樣那樣的意外情況。譬如敏感詞的出現(xiàn),往往事先沒(méi)有征兆。所以,在設(shè)計(jì)系統(tǒng)架構(gòu)時(shí),應(yīng)該給網(wǎng)管提供必要工具,應(yīng)付突發(fā)事件。

標(biāo)簽:日喀則 林芝 遵義 青島 拉薩 深圳 承德 海西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《大型網(wǎng)站的實(shí)例分析 掌握構(gòu)建大型網(wǎng)站的架構(gòu)》,本文關(guān)鍵詞  大型,網(wǎng),站的,實(shí)例分析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《大型網(wǎng)站的實(shí)例分析 掌握構(gòu)建大型網(wǎng)站的架構(gòu)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于大型網(wǎng)站的實(shí)例分析 掌握構(gòu)建大型網(wǎng)站的架構(gòu)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章