轉自:http://www.kafka0102.com/2010/10/350.html
Scalable System Design Patterns 一文概括了幾種常見的系統設計模式。
配圖很漂亮,我就索性摘過來,推薦感興趣的繼續圍觀其博客。
1、Load Balancer該模式中,一個分發器基於某種策略確定由哪個worker實例處理請求。應用最好是無狀態的,以使任何一個worker實例都能同等處理請求。大量的網站都會用到負載均衡器這個模式的。
2、Scatter and Gather該模式中,分發器將請求轉發給多個worker實例,每個worker實例處理完返回給分發器,分發器將worker們返回的結果再加工後再返回給客戶端。以搜索爲例,通常得AS、BS架構就是這種典型模式。
3、Result Cache承接上個模式,這個模式只是在分發器處理時加了一步查詢結果緩存,這都能算是模式!
4、Shared Space這個模式還有個更廣泛的名字–“黑板模式”。實現來說,就是在處理流程中,存在一個全局傳遞的對象,它可能包含了請求參數、中間狀態、響應結果等各種信息,供流程中的各個組件對其進行操作。在一些web框架和應用框架中,都可見這個模式的使用。
5、Pipe and Filter這個模式又以“面向數據流編程”知名,是很通用的企業集成模式。
6、Map Reduce因爲google和hadoop,這個模式幾乎都瞭解些,儘管多數人都沒親身應用過。
7、Bulk Synchronous Parellel
該模型基於一個master協調,所有的worker同步(lock-step)執行。
該模式被用於Google Pregel Graph Processing google-pregel-graph-processing 和Hama。
又一個不很瞭解的模式,似乎是一個和map reduce有一拼的分佈式計算模型,似乎是微軟的創造:Microsoft’s Dryad project。