可伸縮性最佳實踐:來自eBay的經(jīng)驗_第1頁
可伸縮性最佳實踐:來自eBay的經(jīng)驗_第2頁
可伸縮性最佳實踐:來自eBay的經(jīng)驗_第3頁
可伸縮性最佳實踐:來自eBay的經(jīng)驗_第4頁
可伸縮性最佳實踐:來自eBay的經(jīng)驗_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

可伸縮性最佳實踐:來自eBay的經(jīng)驗作者RandyShoup譯者郭曉剛發(fā)布于2008年6月12日下午7時5分社區(qū)架構(gòu)主題設計,性能和可伸縮性標簽eBay分享|在eBay,可伸縮性是我們每天奮力抵抗的一大架構(gòu)壓力。我們所做的每一項架構(gòu)及設計決策,身前身后都能看到它的蹤影。當我們面對的是全世界數(shù)以億計的用戶,每天的頁面瀏覽量超過10億,系統(tǒng)中的數(shù)據(jù)量要用皮字節(jié)(1015或250)來計算——可伸縮性是生死交關的問題。相關廠商內(nèi)容百度技術沙龍第十期報名:WebApp開發(fā)與應用暨2011年技術趨勢展望QCon全球企業(yè)開發(fā)大會(北京站),1月31日前7折搶票火熱進行中!AdobeFlashBuilder4簡體中文正式版高速下載在一個可伸縮的架構(gòu)中,資源的消耗應該隨負載線性(或更佳)上升,負載可由用戶流量、數(shù)據(jù)量等測量。如果說性能衡量的是每一工作單元所需的資源消耗,可伸縮性則是衡量當工作單元的數(shù)量或尺寸增加時,資源消耗的變化情況。換句話說,可伸縮性是整個價格-性能曲線的形狀,而不是曲線上某一點的取值??缮炜s性有很多側(cè)面——事務的方面、運營的方面、還有開發(fā)的方面。我們在改善一個Web系統(tǒng)的事務吞吐量的過程中學到了很多經(jīng)驗,本文總結(jié)了其中若干關鍵的最佳實踐。可能很多最佳實踐你會覺得似曾相識,也可能有素未謀面的。這些都是開發(fā)和運營eBay網(wǎng)站的眾人的集體經(jīng)驗結(jié)晶。最佳實踐#1:按功能分割相關的功能部分應該合在一起,不相關的功能部分應該分割開來——不管你把它叫做SOA、功能分解還是工程秘訣。而且,不相關的功能之間耦合程度越松散,就越能靈活地獨立伸縮其中的一部分。在編碼層次,我們無時不刻都在運用這條原則。JAR文件、包、Bundle等等,都是用來隔離和抽象功能的機制。在應用層次,eBay將不同的功能劃分成幾個應用程序池。銷售功能由一組應用服務器運行,投標功能由另一組負責,搜索又是另外一組服務器。我們把總共約16,000臺應用服務器分成220個池。這樣就可以根據(jù)某項功能的資源消耗,單獨地伸縮其中一個池。我們也因此得以進一步隔離及合理化資源依賴關系——比如銷售池只需要訪問后臺資源的一個相對較小的子集。在數(shù)據(jù)庫層次,我們也采取同樣的做法。eBay沒有無所不包的單一數(shù)據(jù)庫,相反我們有一組數(shù)據(jù)庫主機存放用戶數(shù)據(jù)、一組存放商品數(shù)據(jù)、一組存放購買數(shù)據(jù)……總共1000個邏輯數(shù)據(jù)庫分布在400臺物理主機上。同樣,這種做法讓我們得以單獨為某一類數(shù)據(jù)伸縮其數(shù)據(jù)庫設施。最佳實踐#2:水平切分按功能分割對我們的幫助很大,但單憑它還不足以得到完全可伸縮的架構(gòu)。即使將功能一一解耦,單項功能的資源需求隨著時間增長,仍然有可能超出單一系統(tǒng)的能力。我們常常提醒自己,“沒有分割就沒有伸縮”。在單項功能內(nèi)部,我們需要能把工作負載分解成許多我們有能力駕馭的小單元,讓每個單元都能維持良好的性能價格比。這就是水平分割出場的時候了。在應用層次,由于eBay將各種交互都設計成無狀態(tài)的,所以水平分割是輕而易舉之事。用標準的負載均衡服務器來路由進入的流量。所有應用服務器都是均等的,而且任何服務器都不會維持事務性的狀態(tài),因此負載均衡可以任意選擇應用服務器。如果需要更多處理能力,只需要簡單地增加新的應用服務器。數(shù)據(jù)庫層次的問題比較有挑戰(zhàn)性,原因是數(shù)據(jù)天生就是有狀態(tài)的。我們會按照主要的訪問路徑對數(shù)據(jù)作水平分割(或稱為“sharding”)。例如用戶數(shù)據(jù)目前被分割到20臺主機上,每臺主機存放1/20的用戶。隨著用戶數(shù)量的增長,以及每個用戶的數(shù)據(jù)量增長,我們會增加更多的主機,將用戶分散到更多的機器上去。商品數(shù)據(jù)、購買數(shù)據(jù)、帳戶數(shù)據(jù)等等也都用同樣的方式處理。用例不同,我們分割數(shù)據(jù)的方案也不同:有些是對主鍵簡單取模(ID尾數(shù)為1的放到第一臺主機,尾數(shù)為二的放到下一臺,以此類推),有些是按照ID的區(qū)間分割(1-1M、1-2M等等),有些用一個查找表,還有些是綜合以上的策略。不過具體的分割方案如何,總的思想是支持數(shù)據(jù)分割及重分割的基礎設施在可伸縮性上遠比不支持的優(yōu)越。最佳實踐#3:避免分布式事務看到這里,你可能在疑惑按功能劃分數(shù)據(jù)和水平劃分數(shù)據(jù)的實踐如何滿足事務要求。畢竟,幾乎任何有意義的操作都要更新一個以上的實體——立即就可以舉出用戶和商品的例子。正統(tǒng)的廣為人知的答案是:建立跨資源的分布式事務,用兩WernerVogelsonscalabilityDanPritchettonYouScaledYourWhat?TheComingoftheShardTradingConsistencyforAvailabilityinDistributedArchitecturesEricBrewerontheCAPTheoremSEDA:AnArchitectureforWell-Conditioned,ScalableInternetServices關于作者RandyShoup是eBay的杰出架構(gòu)師。從2004年起擔任eBay搜索基礎

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論