高併發系統設計四-如何讓系統易於擴展

在熱點事件發生時,流量瞬間提升到 2~3倍甚至更高,最快的方式就是堆機器,但需要保證,在擴容了三倍的機器後,相應的系統也能支撐三倍的流量。

1、爲什麼提升擴展性會很複雜

集羣系統中,不同的系統分層上可能存在一些瓶頸點,這些瓶頸點制約着系統的橫向擴展能力,比如:系統的流量是每秒1000次請求,對數據庫的請求量也是每秒1000次,如果流量增加了10倍,雖然系統可以通過擴容正常服務,但是數據庫卻成了瓶頸。

如果多數據庫也進行擴容,存儲集羣中增加或者減少機器時,會涉及到大量數據的遷移,一般傳統的關係型數據庫都不支持。

站在整體的架構的角度,不僅僅是業務服務器的角度來考慮系統的擴展性,數據庫、緩存、依賴的第三方、負載均衡、交換機帶寬等都是系統擴展需要考慮的因素。

2、高可擴展行的設計思路

拆分是提升系統擴展性最重要的一個思路,將一個龐雜的系統拆分成獨立的,有單一職責的模塊。即將複雜問題簡單話。

  • 存儲層的擴展性
  • 業務層的擴展性

3、redis 擴展

redis擴展主要兩方面。主備方案以及集羣方案。

  • 主備
    用 redis 的 sentinel(哨兵)方案主要是解決 redis 主節點故障後的自動切換。它負責持續監控主從節點的健康,當主節點掛掉時,自動選擇一個最優的從節點切換爲主節點。

  • 集羣方案

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