分層模型
分層模型應該是我們編程里面最常用的模型,尤其是web開發里面,會有表示層、業務層和持久化層以及DB層,在表示層主要是web頁面,業務層主要是編寫核心的業務代碼,持久化層主要是負責保存數據。通過分層將職責分開,上一層調用下一層的接口。反過來,下層的設計不會依賴上層。

和分層模型比較關聯的MVC模型,也是web開發中常用的,其中M是數據mode定義,也就是定義業務類,V是視圖,用于數據展現,C是controller控制,編寫業務邏輯。

管道過濾器
管道過濾器主要用于數據處理,源數據經過一系列的過濾器處理后發送到sink。這里的過濾器不僅限于過濾,還可以用于數據處理。

不同的過濾器實現相同的接口,這種松耦合的方式可以隨意將不同過濾器組合到一起。但由于鏈路比較長,延遲會比較高。
客戶端服務器
這種方式主要是客戶端通過網絡連接到服務器,客戶端通過HTTP或者RPC的方式,請求服務端,并等待服務端返回。

這種模式由于服務端是中心化的,性能瓶頸在服務端。
事件驅動模型
事件驅動也是最近兩年比較流行的概念,服務之間通過事件驅動執行。它是一種更加松耦合的方式,事件的觸發者甚至不知道這個事件會被誰去消費,通常扔到消息隊列里面。

事件的消費者通過監聽關心的事件,觸發執行操作。我們熟知的knative 以及FaaS 等很多地方都使用了事件觸發,譬如我們通過 FaaS 圖片處理,每當上傳一個圖片到對象存儲就會觸發一次事件,執行對應的函數。
微服務
微服務也是這兩年比較流行的概念,尤其是云原生(微服務、容器化、Devops)的興起。微服務主要是解決單體架構的弊端。將單個龐大的服務拆分成多個高內聚、低耦合并且職責單一的微服務。

服務之間通過API 相互調用,外部通過API gateway 轉發請求。并且每個服務都可以獨立部署和發布。