国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

大型網站的實例分析 掌握構建大型網站的架構

2024-04-25 20:21:23
字體:
來源:轉載
供稿:網友

學習和掌握構建大型網站的架構,需要匯總散落的文章,梳理零散的內容。做好這項工作很有意義,但是也比較困難。我們的體會是,不妨抓住以下幾個主題,逐個分析大型網站的實例,然后橫向比較。

1. Database

數據存儲歷來是麻煩,尤其是需要存儲海量數據的時候,往往單個數據庫容量不夠,甚至一個數據庫集群也不夠。常見的解決辦法是分割,譬如按用戶ID把海量數據分割成若干塊,每塊存儲到一個獨立的數據庫里去。但是分割的做法降低了join操作的效率。

Google Bigtable的效率如何?好處是什么,缺陷是什么?Bigtable對什么樣的情景最適用?根據Bigtable原理實現的開源軟件,Hadoop/HBase的運行效率如何?

2. Cache

用戶訪問網站時,通常讀的操作比寫的操作更頻繁。為了提高讀的操作,不妨把相關內容緩存到內存里,減少Disk IO的消耗。

MemCached 最近大熱,Wikipedia, YouTube, Digg, Twitter等等大型網站都在用MemCached作為緩存工具。SquidCache和Varnish等等工具,也與緩存沾邊。Twitter的做法是把MemCached和Varnish結合起來,同時使用。什么樣的內容,應該用什么樣的緩存工具?不同的工具間如何協調?各大網站的實際運行的結果,有哪些經驗和教訓?

3. File System

有些內容,既沒必要存放在數據庫里,也不適合存放在緩存中,譬如log 和images。在這種情況下,我們需要文件系統。當有海量內容需要存放在文件系統中時,我們需要使用分布式文件系統。Google File System對于什么樣的情景適用,什么樣的情景不適用?分布式文件系統常常需要相應的鎖機制,保證并發的讀寫操作不相互干擾。Chubby有什么好處?什么情形下不適用?

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

4. Thread Management

一套工序通常由若干任務組成。多線程的辦法是由一根線程全權負責整套工序的操作。另外一個辦法是把工序斬成幾段,每一段由一根或幾根線程負責,這種辦法稱為工作臺。

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

5. Scheduler

同一個網站通常會提供多種服務,不同的服務需要調用不同的業務邏輯。有些業務邏輯可以在同一臺服務器上完成,但是當業務邏輯復雜的時候,需要調用多臺服務器合作完成。不同服務的受眾對象不同,流量也不同,不同時段的流量也不同,同一時段不同服務的流量也不同,所以需要動態地分配計算資源。這是 scheduler的工作。

Scheduler給不同服務器分配工作時,最簡單的辦法是啟動預先安裝在該服務器上的相關程序。由于不能保證每個程序都十分完美,當一個程序發生錯誤時,應當避免整個服務器因此而崩潰,影響其它工作的正常進行。是否需要動用virtual machine,實現各個不同工作之間相互隔絕?

6. Signal Flow and Data Flow

大型網站后臺系統經常由眾多服務器組成,服務器與服務器之間時不時會發生數據交換,譬如Web Server解析完用戶請求后,把請求轉發給某一臺App Server,這一臺App Server完成了部分工作后,把中間數據轉發給下一臺App Server。而第二臺App Server完成任務后,整個工作就結束了,結果應該返回給Web Server。

問題是如何讓第一臺App Server如何知道應該把中間結果給第二臺App Server,而第二臺App Server又如何知道它的目的地是Web Server?一個比較有效率的做法,是區別數據流和控制流。Server與Server之間常設通道,專供控制流使用,傳遞指令去控制數據流的發送。數據流不占用控制流通道,只有在需要時,才建立數據流的通道。

控制流和數據流的組織,需要結合具體的業務邏輯,才能優化設計,減少帶寬消耗,縮短數據傳輸的時間。

7. Instrumentation

網站后臺各個部分是否運轉正常,哪里是瓶頸,哪里空閑。這些都需要實時監控。不僅及時避免整個后臺系統的崩潰,而且可以分析各個部分運行的規律,從而找到優化系統的途徑。

問題是,應該選用什么樣的監控工具,才能夠盡量減少對系統程序的干擾,同時提供有價值的信息?

8. Anti-abuse

通常網站面對的是形形色色的用戶,絕大多數用戶的行為是友好的,但是不排除少數用戶蓄意惡作劇。如果事先沒有設計防范措施,少數惡意用戶的胡作非為,會干擾其他用戶享受正常的服務。

問題是,如何防范并且及時制止惡意行為的發生?

9. Exception Handling

不論預先設想有多周密,實際運行時,總會遇到這樣那樣的意外情況。譬如敏感詞的出現,往往事先沒有征兆。所以,在設計系統架構時,應該給網管提供必要工具,應付突發事件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麟游县| 长治市| 定边县| 乐山市| 讷河市| 太白县| 麻城市| 通道| 紫金县| 阿拉善右旗| 上林县| 松江区| 高青县| 开江县| 修文县| 邢台县| 新和县| 湄潭县| 龙井市| 滦平县| 江口县| 伽师县| 灯塔市| 临湘市| 古交市| 噶尔县| 绥滨县| 湖北省| 阜平县| 湖南省| 新邵县| 南康市| 长葛市| 邵阳市| 神农架林区| 凯里市| 南宫市| 大埔区| 庐江县| 高邑县| 兴国县|