8個常用於可擴充套件系統的設計模式

2021-05-24 13:09:12 字數 747 閱讀 3580

1,負載均衡– 把乙個請求按一定hash演算法或規則分配到伺服器組中的一台去處理,以分擔單個伺服器的壓力。這一般多見於大型**的構架。

3,結果快取– 伺服器快取某個請求的結果,下次對同樣的請求只返回快取的結果就ok了,而避免下次同樣的請求進來時去做重複的計算。memcached就是做這個用的。

4,空間共享– 分布式計算常用的模式,所有的資料、物件都放在乙個共享虛擬空間,所有的計算程序共享並控制這些資料。

5,管道過濾– 所有的請求都先進入某個管道,然後以先進先出的方式接受處理和返回結果。有點似曾經寫的投票,推薦這樣的應用時的處理方式。

6,mapreduce–  在處理批量任務時,如果磁碟i / o是主要瓶頸,則一般採取這種模式。它的使用分布式的檔案系統,從而使多個i/o操作能夠並行。這種模式在谷歌的內部應用程式中使用的較多,開源的hadoop就是個典型案例

7,批量同步並行–  該模式下的所有任務是基於鎖步執行,由master來協調。每個任務重複以下步驟,直到再沒有活躍的任務。

每個任務從輸入佇列中讀取資料

每個任務根據自己讀取到的資料進行處理

每個任務將自己的處理結果直接返回

8,execution orchestrator- 該模型是基於乙個智慧型排程的任務分配,還沒太弄明白。

可擴充套件系統設計的要點

根據以往經驗和的總結 縱向擴充套件 硬體方面可以更換更強勁的伺服器,增加 cpu 記憶體,使用高速磁碟。軟體方面可以對現有 的優化,重構。使用 non blocking 非阻塞 io 模式,或者非同步 io 模式,使用執行緒模式或者改用 事件驅動形模式。目標是提高單機 qps 連線數,來支援更多的連...

設計模式 7個常用的設計原則

單一職責 用於橫向區分,介面,類,方法職責單一。介面1與介面2分別包含各自的職責 介面隔離 用於豎向繼承,介面粒度不能過大。它的實現類 客戶端 不需要多餘方法 開閉原則 目的。擴充套件開放,修改關閉 黎克特制代換 基礎。基類出現的地方,必須可以使用子類替換 依賴倒轉 手段。依賴抽象,依賴介面。實現需...

常用的八個設計模式

單例模式 singleton 保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點。工廠方法 factory method 工廠方法是針對每一種產品提供乙個工廠類。通過不同的工廠例項來建立不同的產品例項。建立方法只用乙個,只建立一種產品,側重於 怎麼建立 簡單工廠 staticfactory me...