除了Cache外,可以看到各大網站都采用了CDN,CDN可以讓靜態文件更加的靠近用戶,以便用戶快速獲取,而除了讓靜態文件更靠近用戶外,多IDC的建設除了提升可用性外,還可實現讓動態數據更靠近用戶,當然,這個在技術上的實現難度會比CDN高很多。
除了結構上的這幾點外,技術創新是提升系統性能的重要方法,例如Google提高TCP的初始擁塞窗口值等,而要做到技術創新,顯然可控性就是基礎了。
成本
隨著網站規模的不斷擴大,系統的運行和維護成本將會成為公司中支出的重要部分,例如有數據表明騰訊每年的支出中,支付給運營商的費用是其中占比排第二的部分(2010年為208億),因此網站規模越大,成本控制就越重要(潛臺詞是網站規模在不是很大的時候,也許支撐業務快速發展更重要),例如Google在設計系統時price/performance是重要的考量指標,有些網站也會采用x元/每千次page views來計算成本。
性能優化有些是需要增加成本的(例如cache、CDN),而有些性能優化是可以降低成本(例如Google對Index結構的優化)的,因此通常性能優化也是降低成本的一種方法,網站規模大了后的規模效應可以讓有些性能優化帶來的成本降低非常的明顯。
硬件的不斷升級,而軟件系統層面上又更多的是靠cluster來支撐,因此通常很難完全消耗硬件資源,虛擬化就成為一種不錯的降低成本的方法,虛擬化具備了很好的隔離機制,避免了應用的互相影響,因此落地的難度不大。
除了依靠虛擬化來降低成本的方法外,Google則采用了自行實現的一種Shared Environment的方法來降低成本,Shared Environment可根據不同類型的資源消耗,動態組合(例如分時)部署到同一臺機器上,充分的發揮機器的資源。
在前文中也講到,網站主要是靠可伸縮存活下來,隨著規模的擴大,必然會有大量的機器, Google有上百萬臺的機器,Facebook有幾十萬臺機器,在這么大規模的情況下,自行根據應用特征設計機器,會帶來很大的成本下降,因此Google、Facebook都自行設計機器以及自行設計DataCenter,從PUE上就可以看到Google/Facebook自行設計DataCenter帶來的成本降低是非??捎^的。
以上四點挑戰會由于網站業務的不同、人員知識結構的不同、做事風格的不同以及所處的階段不同而采用不同的方法去解決,每個階段都有自己適用的解決方案,例如Google在成立之初業務為搜索,相對而言搜索市場的競爭主要是技術,功能次之,而facebook/eBay等網站的競爭壓力主要在業務功能上,因此在成立之初的時候必然會有不同的側重點,所以也不用想著一開始就去把網站做成Google/Facebook等現在的結構,選擇適合自己網站的就是好的,很多開發人員在加入規模較大的網站后,會覺得系統結構已經穩定了,沒有發展的空間,但從上面各網站的發展歷程來看,可以看出網站對技術的要求是不斷在演變的,通過觀察大網站的發展歷程,對自己結合公司的業務背景、知識結構等來判斷其下一步的發展,是會有很大的幫助的,并且也可以借此儲備一些技術,以把握技術演變時的機會,獲得更大的成長,如果是加入規模尚小的網站,技術儲備做的好的話,就有機會親身經歷網站從小到大的演變了,因此都有機會,就看個人如何把握。
圍繞這四個方向的發展,通常網站在發展到一定規模后會演變成類似如下的結構:
除了在可伸縮性、可用性、性能以及成本這四點的技術挑戰外,網站還面臨了其他很多方面的挑戰,例如海量數據的分析和挖掘、網站安全、業務發展的靈活性支撐、人員增長后龐大的軟件管理等等,因此構建一個支撐大訪問量、長期發展、低成本運行的網站是需要有堅實的技術作為支撐的。
原文轉自:http://bluedavy.me/?p=396