一部小小的手機里邊,可能一起裝載著數十個軟件。并且在同一時刻,可能好幾個軟件在一起運轉。別的,還得時刻準備暫停運轉,把手機CPU等資源讓給電話通話等優先等級高的作業。還有,時刻需求準備敷衍網絡連接中斷,手機電池耗盡等等狀況??倸w,手機軟件的結構規劃,是做小的藝術。
說到做大規模網站,大家一定會想到云核算,想到Google File System,Chubby, BigTable,MapReduce等等。這些技能當然很好,可是它們僅僅是構成一個大型網站的技能要素。實踐構建一個大型網站時,光知道技能要素是不行的,還得明白怎么把各個要素有機地結合到一起。
學習和掌握構建大型網站的架構,需求匯總散落的文章,梳理零散的內容。做好這項作業很有含義,可是也比較困難。咱們的體會是,不妨抓住以下幾個主題,逐一分析大型網站的實例,然后橫向比較。
Google Bigtable的功率怎么?優點是什么,缺點是什么?Bigtable對什么樣的情景最適用?根據Bigtable原理完成的開源軟件,Hadoop/HBase的運轉功率怎么?
MemCached 最近大熱,Wikipedia, YouTube, Digg, Twitter等等大型網站都在用MemCached作為緩存東西。SquidCache和Varnish等等東西,也與緩存沾邊。Twitter的做法是把MemCached和Varnish結合起來,一起運用。什么樣的內容,應該用什么樣的緩存東西?不同的東西間怎么和諧?各大網站的實踐運轉的成果,有哪些經驗和教訓?
據說MogileFS更適合存儲大量的,可是單體尺度不大的文件,譬如images。而Google File System更適合存擴大尺度可是數目不多的文件。有沒有可能把小尺度的多個文件,合并成一個大文件,然后存儲到Google File System中往。在這種狀況下,比較MogileFS與Google FS的性能,是否有高下之分?
常見的是多線程的方法。可是作業臺的做法有利于集中核算資源處理繁重的任務,防止瓶頸的出現。可是缺點是需求在不同線程之間,傳遞記錄中心狀態的數據。么樣的情形適適用多線程,什么時候用作業臺?
Scheduler給不同服務器分配作業時,最簡單的方法是啟動預先安裝在該服務器上的相關程序。因為不能確保每個程序都十分完美,當一個程序發作錯誤時,應當防止整個服務器因此而潰散,影響其它作業的正常進行。是否需求動用virtual machine,完成各個不同作業之間彼此隔盡?
標題是怎么讓第一臺App Server怎么知道應該把中心成果給第二臺App Server,而第二臺App Server又怎么知道它的目的地是Web Server?一個比較有功率的做法,是區別數據流和操控流。Server與Server之間常設通道,專供操控流運用,傳遞指令往操控數據流的發送。數據流不占用操控流通道,只要在需求時,才建立數據流的通道。操控流和數據流的安排,需求結合詳細的事務邏輯,才能優化規劃,削減帶寬耗費,縮短數據傳輸的時刻。
一般網站面臨的是形形色色的用戶,盡大多數用戶的行為是友愛的,可是不排除少量用戶蓄意惡作劇。假設事前沒有規劃防備措施,少量歹意用戶的肆無忌憚,會攪擾其他用戶享用正常的服務。
不管預先想象有多周密,實踐運轉時,總會碰到這樣那樣的意外狀況。譬如靈敏詞的出現,往往事前沒有征兆。所以,在規劃體系架構時,應該給網管供給必要東西,敷衍突發事件。
<span "="" style="font-size: 14px;">
業務咨詢微信
今日已有165人獲取方案