【譯】可伸縮性最佳實踐
這篇文章中總結了一些構建可伸縮性系統的最佳實踐,總結的不錯,于是翻譯了下,原文在此:http://akfpartners.com/techblog/2009/08/11/scalability-best-practices/,翻譯內容如下:
下面是我們認為的一些可伸縮性的最佳實踐:
1、異步;盡可能的使用異步,同步調用會導致兩個服務的可用性綁在一起,意味著一個服務出問題或變慢,另一個也會受到影響,這點也是eBay一直強調的;
2、泳道設計;錯誤隔離機制,避免一個失敗影響全局,這種機制也有助于錯誤查找和代碼替換;
3、緩存;在所有層次均使用緩存,例如數據、頁面、頁面片段等;
4、監測;從用戶角度來看系統的性能。這包括從外部網絡來對系統進行性能的監測,以及內部的系統間交互次數以及時間的監測;
5、數據復制;一方面是為了容災,另一方面是為了提供多個用于讀的數據庫,降低寫庫的壓力;
6、拆分;包括了應用的拆分以及數據庫的拆分;
7、盡量少的使用數據庫特性;盡可能的把數據庫僅作為一個在線存儲的功能而使用,不要把業務邏輯放在數據庫里,否則將來會非常難擴展;
8、緩慢發布;發布時應緩慢發布,以保證新版本是正常的,避免由于某個壓力測試時沒測到的點,導致全站出問題;
9、壓力以及性能測試;在發布前測試性能,盡管這不一定能發現全部問題,因此在發布前仍然要做好回滾的方案;
10、容量規劃;提前判斷系統能支撐多大的量,并做好擴容計劃;
11、回滾;每次都要做好回滾的準備;
12、根源分析;確認有辦法找到線上問題的根源所在,從而能夠真正的解決問題;
13、從一開始就要注重質量;質量不能僅靠測試來保證,必須從設計階段開始就去保證。
譯注:
以上說的這十三點可謂是構建可伸縮系統的金玉良言,但可惜缺乏了實例引導,沒有經驗的同學估計會很難看明白為什么一定要這樣做,如果有些實例來說明的話,就更帥了!
下面是我們認為的一些可伸縮性的最佳實踐:
1、異步;盡可能的使用異步,同步調用會導致兩個服務的可用性綁在一起,意味著一個服務出問題或變慢,另一個也會受到影響,這點也是eBay一直強調的;
2、泳道設計;錯誤隔離機制,避免一個失敗影響全局,這種機制也有助于錯誤查找和代碼替換;
3、緩存;在所有層次均使用緩存,例如數據、頁面、頁面片段等;
4、監測;從用戶角度來看系統的性能。這包括從外部網絡來對系統進行性能的監測,以及內部的系統間交互次數以及時間的監測;
5、數據復制;一方面是為了容災,另一方面是為了提供多個用于讀的數據庫,降低寫庫的壓力;
6、拆分;包括了應用的拆分以及數據庫的拆分;
7、盡量少的使用數據庫特性;盡可能的把數據庫僅作為一個在線存儲的功能而使用,不要把業務邏輯放在數據庫里,否則將來會非常難擴展;
8、緩慢發布;發布時應緩慢發布,以保證新版本是正常的,避免由于某個壓力測試時沒測到的點,導致全站出問題;
9、壓力以及性能測試;在發布前測試性能,盡管這不一定能發現全部問題,因此在發布前仍然要做好回滾的方案;
10、容量規劃;提前判斷系統能支撐多大的量,并做好擴容計劃;
11、回滾;每次都要做好回滾的準備;
12、根源分析;確認有辦法找到線上問題的根源所在,從而能夠真正的解決問題;
13、從一開始就要注重質量;質量不能僅靠測試來保證,必須從設計階段開始就去保證。
譯注:
以上說的這十三點可謂是構建可伸縮系統的金玉良言,但可惜缺乏了實例引導,沒有經驗的同學估計會很難看明白為什么一定要這樣做,如果有些實例來說明的話,就更帥了!
posted on 2009-08-19 14:41 BlueDavy 閱讀(6921) 評論(4) 編輯 收藏 所屬分類: Internet