1. 程式人生 > >可伸縮性最佳實踐

可伸縮性最佳實踐

這篇文章中總結了一些構建可伸縮性系統的最佳實踐,總結的不錯,於是翻譯了下,原文在此:http://akfpartners.com/techblog/2009/08/11/scalability-best-practices/ ,翻譯內容如下:

下面是我們認為的一些可伸縮性的最佳實踐:
1、非同步;儘可能的使用非同步,同步呼叫會導致兩個服務的可用性綁在一起,意味著一個服務出問題或變慢,另一個也會受到影響,這點也是eBay一直強調的;

2、泳道設計;錯誤隔離機制,避免一個失敗影響全域性,這種機制也有助於錯誤查詢和程式碼替換;

3、快取;在所有層次均使用快取,例如資料、頁面、頁面片段等;

4、監測;從使用者角度來看系統的效能。這包括從外部網路來對系統進行效能的監測,以及內部的系統間互動次數以及時間的監測;

5、資料複製;一方面是為了容災,另一方面是為了提供多個用於讀的資料庫,降低寫庫的壓力;

6、拆分;包括了應用的拆分以及資料庫的拆分;

7、儘量少的使用資料庫特性;儘可能的把資料庫僅作為一個線上儲存的功能而使用,不要把業務邏輯放在資料庫裡,否則將來會非常難擴充套件;

8、緩慢釋出;釋出時應緩慢釋出,以保證新版本是正常的,避免由於某個壓力測試時沒測到的點,導致全站出問題;

9、壓力以及效能測試;在釋出前測試效能,儘管這不一定能發現全部問題,因此在釋出前仍然要做好回滾的方案;

10、容量規劃;提前判斷系統能支撐多大的量,並做好擴容計劃;

11、回滾;每次都要做好回滾的準備;

12、根源分析;確認有辦法找到線上問題的根源所在,從而能夠真正的解決問題;

13、從一開始就要注重質量;質量不能僅靠測試來保證,必須從設計階段開始就去保證。

譯註:
以上說的這十三點可謂是構建可伸縮系統的金玉良言,但可惜缺乏了例項引導,沒有經驗的同學估計會很難看明白為什麼一定要這樣做,如果有些例項來說明的話,就更帥了!