只需要復制數據和功能就可以快速擴展事務(wù)。為成功做好計劃,把系統設計為能夠橫向擴展的。不要讓自己陷入如此困境:要進(jìn)行縱向擴展時(shí),卻發(fā)現已經(jīng)沒(méi)錢(qián)購買(mǎi)更快更大的系統了。
當你發(fā)現系統中的客戶(hù)和事務(wù)在快速增長(cháng),而系統卻不能擴展到多個(gè)服務(wù)器上時(shí),你會(huì )怎么做?理想情況下,應該研究你有哪些選擇。是購買(mǎi)更大的服務(wù)器,還是花費更多的編程時(shí)間使軟件能在多個(gè)服務(wù)器上運行。讓?xiě)贸绦蚧驍祿炷軌蛟诙鄠€(gè)服務(wù)器上運行,就是所謂的橫向擴展。繼續讓系統在更大的硬件上運行,則稱(chēng)為縱向擴展。在分析過(guò)程中,通過(guò)ROI計算,結論可能會(huì )是購買(mǎi)更大的硬件比花費技術(shù)資源來(lái)修改應用程序更便宜。雖然我們支持得出這種結論的分析方法,但對于超高速發(fā)展的公司和產(chǎn)品來(lái)說(shuō),這個(gè)結論可能是錯誤的。原因在于它可能沒(méi)有考慮長(cháng)期成本。把具有兩個(gè)64位雙核處理器的服務(wù)器換成具有四個(gè)處理器的服務(wù)器,其成本與從中得到的新增計算資源是成比例的(約2倍)。當我們繼續購買(mǎi)具有更多處理器的大型服務(wù)器時(shí),謬誤就出現了。計算處理能力的成本曲線(xiàn)是條冪次定律曲線(xiàn),其中成本的增長(cháng)與更大的服務(wù)器提供的處理能力的增長(cháng)不再成比例l假設你的公司在持續地成功與增長(cháng),那么你購買(mǎi)更大系統的成本就會(huì )隨著(zhù)曲線(xiàn)一直增長(cháng)。雖然你可能已經(jīng)為技術(shù)更新做了預算,但是仍可能會(huì )不得不用高得離譜的價(jià)格去購買(mǎi)新系統。而如果你的系統是能夠橫向擴展的,那么購買(mǎi)的系統就會(huì )便宜得多。整體說(shuō)來(lái),你總的成本支出會(huì )大大增加。當然,隨著(zhù)代碼庫的增大以及系統復雜度的增加,用于解決問(wèn)題的編程資源的成本也會(huì )增加,但這種增長(cháng)是線(xiàn)性的。因此,在本章開(kāi)頭的分析應該得出的結論是:盡早花時(shí)間修改代碼進(jìn)行橫向擴展。

7個(gè)配置(內存和硬盤(pán)等)幾乎完全相同的服務(wù)器的成本,唯一不同的是處理器的數量和每個(gè)處理器的核數量。圖中采用的是一家大型服務(wù)器供應商的在線(xiàn)報價(jià)和配置。無(wú)可否認,兩個(gè)雙核處理器的計算資源與一個(gè)四核處理器的計算資源并不相等,但從成本上對比,它們的成本非常接近。請注意快速增長(cháng)的曲線(xiàn)。
根據我們?yōu)樯习賯€(gè)客戶(hù)服務(wù)的經(jīng)驗,這種分析產(chǎn)生的結論幾乎都是修改代碼或數據庫以進(jìn)行橫向擴展。這就是為f什么AKF Partners認定縱向擴展總是失敗的原因所在。最終你總會(huì )遇到兩種情況之一,即成本不合算了,或者沒(méi)有更大型的硬件設備可用了。例如,我們有過(guò)這樣一位客戶(hù),在把自己的顧客群分布到不同系統之后,他們依然有能力一直擴展數據庫的硬件。最后,當采用了硬件供應商所提供的6臺最大型的服務(wù)器后,達到了極限。每臺這樣的服務(wù)器需要花費300多萬(wàn)美金,硬件的整體花費接近2000萬(wàn)。由于顧客數量還在增長(cháng),所以他們還是要竭力擴展,于是他們同意了對數據庫進(jìn)行橫向擴展的項目。他們選擇用4臺較小的服務(wù)器替換每1臺大型的服務(wù)器。每臺小服務(wù)器的成本是35萬(wàn)美金。最終,他們不僅成功實(shí)現了顧客增長(cháng)所需的擴展,還節約了將近100萬(wàn)美金的成本。后來(lái),這家公司一直在使用這些舊系統,直到最后這些系統過(guò)時(shí),才采用低成本、更小的新系統。
大多數系統從最初設計時(shí)就能夠在多臺服務(wù)器上運行,或者能夠被很容易地改為具有這種功能。對于大多數SaaS應用來(lái)說(shuō),只要把代碼復制到多個(gè)應用服務(wù)器上,然后把應用服務(wù)器放在負載均衡器上,就可以實(shí)現這一點(diǎn)。應用服務(wù)器之間不需要互相通信,哪個(gè)服務(wù)器處理哪個(gè)請求是由負載均衡器決定的。如果某個(gè)應用需要記錄狀態(tài),那么可以用負載均衡器的會(huì )話(huà) cookie維護客戶(hù)瀏覽器和特定的應用服務(wù)器之間的關(guān)聯(lián)關(guān)系。一旦客戶(hù)發(fā)起了最初請求,那么響應該請求的服務(wù)器就會(huì )一直處理該客戶(hù)的請求,直到會(huì )話(huà)結束。橫向擴展數據庫通常需要更多的計劃和編程工作,但就像本章開(kāi)頭解釋的,這種投人是值得的。我們介紹了擴展應用程序或數據庫的三種方法。它們在A(yíng)KF擴展立方上被標識為X軸、Y軸和Z軸,分別對應于復制(克隆)拆分不同的東西(服務(wù))和拆分相近的東西(客戶(hù))
“等等!”你可能會(huì )大喊,“Intel的創(chuàng )始人之一戈登?摩爾在1965年預言過(guò),集成電路上的晶體管數目,每?jì)赡昃蜁?huì )翻一番!”不錯,近50年來(lái),摩爾定律一直是對的,這點(diǎn)令人驚嘆。問(wèn)題是,這個(gè)“定律”并不是永恒的真理,戈登·摩爾在2005年的訪(fǎng)談中也承認了這一點(diǎn)。此外,如果你的公司真是一個(gè)超高速發(fā)展的網(wǎng)站建設公司,那么你的客戶(hù)數或業(yè)務(wù)量不會(huì )每?jì)赡曛环环?,很可能每個(gè)季度就翻一番。如果依據摩爾定律擴展你的系統,那么無(wú)論是擴展應用程序還是擴展數據庫,都可能會(huì )導致失敗。
本文地址:http://www.havencoinwallet.com//article/3459.html