高可用的網站架構

 

高可用:負載增大時,系統仍然能在正常時間範圍內響應請求(包括快速失敗)。
 

實現高可用的常用方法

1、超時機制
在應用中儘量設置超時時間,eg. 連接超時、服務調用超時,避免服務器故障、線程死鎖等原因造成程序一直阻塞。
 

2、異步調用服務
如果在服務中同步調用其它服務,下游服務故障時,上游服務也會受到影響,可通過消息隊列等方式異步調用服務,消息隊列實現了服務間的解耦,下游服務故障時,上游服務不受影響。
 

3、服務限流、降級
可在網關層、服務層使用guava、hystrix等框架對服務進行限流、降級
 

4、冪等性設計
在高併發時,常常會出現延時響應,從而造成消息的重複消費、服務的重複調用,這時候需要考慮冪等性,get、put、delete都是冪等的,不用考慮;post(新建)不是冪等的,需要實現冪等性。
 

5、數據備份
數據備份用於保證數據的可用性,備份可分爲熱備、冷備,冷備是把數據備份到硬盤等存儲介質中,冷備的特點是簡單但數據恢復慢。
 

6、失效轉移
失效轉移:集羣中的某個節點故障時,對此節點的所有讀寫操作都要改路由到集羣中的其它的節點。失效轉移的3個步驟:失效確認、訪問轉移、數據恢復。常見的比如nginx代理tomcat,zk集羣,redis的主從節點。
 

7、分級部署
將服務劃分優先級,eg. 訂單服務、支付服務的優先級高於評價服務,高優先級的服務、應用部署到性能更好的機器上。

低優先級的服務可以通過部署在不同的虛擬機上進行隔離,高優先級的服務儘量部署到不同物理機上進行隔離,核心服務應該部署到不同地域的數據中心上。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章