只需要復制數據和功能就可以快速擴展事務。為成功做好計劃,把系統設計為能夠橫向擴展的。不要讓自己陷入如此困境:要進行縱向擴展時,卻發現已經沒錢購買更快更大的系統了。
當你發現系統中的客戶和事務在快速增長,而系統卻不能擴展到多個服務器上時,你會怎么做?理想情況下,應該研究你有哪些選擇。是購買更大的服務器,還是花費更多的編程時間使軟件能在多個服務器上運行。讓應用程序或數據庫能夠在多個服務器上運行,就是所謂的橫向擴展。繼續讓系統在更大的硬件上運行,則稱為縱向擴展。在分析過程中,通過ROI計算,結論可能會是購買更大的硬件比花費技術資源來修改應用程序更便宜。雖然我們支持得出這種結論的分析方法,但對于超高速發展的公司和產品來說,這個結論可能是錯誤的。原因在于它可能沒有考慮長期成本。把具有兩個64位雙核處理器的服務器換成具有四個處理器的服務器,其成本與從中得到的新增計算資源是成比例的(約2倍)。當我們繼續購買具有更多處理器的大型服務器時,謬誤就出現了。計算處理能力的成本曲線是條冪次定律曲線,其中成本的增長與更大的服務器提供的處理能力的增長不再成比例l假設你的公司在持續地成功與增長,那么你購買更大系統的成本就會隨著曲線一直增長。雖然你可能已經為技術更新做了預算,但是仍可能會不得不用高得離譜的價格去購買新系統。而如果你的系統是能夠橫向擴展的,那么購買的系統就會便宜得多。整體說來,你總的成本支出會大大增加。當然,隨著代碼庫的增大以及系統復雜度的增加,用于解決問題的編程資源的成本也會增加,但這種增長是線性的。因此,在本章開頭的分析應該得出的結論是:盡早花時間修改代碼進行橫向擴展。
7個配置(內存和硬盤等)幾乎完全相同的服務器的成本,唯一不同的是處理器的數量和每個處理器的核數量。圖中采用的是一家大型服務器供應商的在線報價和配置。無可否認,兩個雙核處理器的計算資源與一個四核處理器的計算資源并不相等,但從成本上對比,它們的成本非常接近。請注意快速增長的曲線。
根據我們為上百個客戶服務的經驗,這種分析產生的結論幾乎都是修改代碼或數據庫以進行橫向擴展。這就是為f什么AKF Partners認定縱向擴展總是失敗的原因所在。最終你總會遇到兩種情況之一,即成本不合算了,或者沒有更大型的硬件設備可用了。例如,我們有過這樣一位客戶,在把自己的顧客群分布到不同系統之后,他們依然有能力一直擴展數據庫的硬件。最后,當采用了硬件供應商所提供的6臺最大型的服務器后,達到了極限。每臺這樣的服務器需要花費300多萬美金,硬件的整體花費接近2000萬。由于顧客數量還在增長,所以他們還是要竭力擴展,于是他們同意了對數據庫進行橫向擴展的項目。他們選擇用4臺較小的服務器替換每1臺大型的服務器。每臺小服務器的成本是35萬美金。最終,他們不僅成功實現了顧客增長所需的擴展,還節約了將近100萬美金的成本。后來,這家公司一直在使用這些舊系統,直到最后這些系統過時,才采用低成本、更小的新系統。
大多數系統從最初設計時就能夠在多臺服務器上運行,或者能夠被很容易地改為具有這種功能。對于大多數SaaS應用來說,只要把代碼復制到多個應用服務器上,然后把應用服務器放在負載均衡器上,就可以實現這一點。應用服務器之間不需要互相通信,哪個服務器處理哪個請求是由負載均衡器決定的。如果某個應用需要記錄狀態,那么可以用負載均衡器的會話 cookie維護客戶瀏覽器和特定的應用服務器之間的關聯關系。一旦客戶發起了最初請求,那么響應該請求的服務器就會一直處理該客戶的請求,直到會話結束。橫向擴展數據庫通常需要更多的計劃和編程工作,但就像本章開頭解釋的,這種投人是值得的。我們介紹了擴展應用程序或數據庫的三種方法。它們在AKF擴展立方上被標識為X軸、Y軸和Z軸,分別對應于復制(克隆)拆分不同的東西(服務)和拆分相近的東西(客戶)
“等等!”你可能會大喊,“Intel的創始人之一戈登?摩爾在1965年預言過,集成電路上的晶體管數目,每兩年就會翻一番!”不錯,近50年來,摩爾定律一直是對的,這點令人驚嘆。問題是,這個“定律”并不是永恒的真理,戈登·摩爾在2005年的訪談中也承認了這一點。此外,如果你的公司真是一個超高速發展的網站建設公司,那么你的客戶數或業務量不會每兩年只翻一番,很可能每個季度就翻一番。如果依據摩爾定律擴展你的系統,那么無論是擴展應用程序還是擴展數據庫,都可能會導致失敗。
本文地址:http://m.murenxiang.com.cn//article/3459.html