單體應用 適合採用 dapr 構建嗎?

張善友 發表於 2021-10-15

緣起今天在微信群裡有同學問 ”純.net 專案,有必要上dapr嗎?” 

image

當時不假思索的說不是微服務沒必要,其他群友也說沒必要。下午細想了一下,覺得這個和微服務沒有關係,如果我的應用是個單體架構(將所有功能都部署在一個web容器中執行的系統就叫做巨石型應用),但是它卻用到了分散式中介軟體,比如快取、訊息佇列,Actor模型呢,這些分散式中介軟體的標準化API 正是Dapr的價值所在。

看我前兩天寫的文章 為什麼 Dapr 如此令人興奮 第二點,Dapr利用Sidecar的模式,把程式碼中的一些橫切關注點需求(Cross-cutting)分離和抽象出來,從而達到執行環境的獨立對外部依賴(包括服務之間)的獨立.  橫切關注點需求是無論單體還是微服務都需要處理的問題。

image

總之,Dapr 解決了分散式中介軟體的依賴問題,上層所有的語言和下層所有的基礎設施,通過一層層統一的介面進行抽象。不管用 Redis Stream 還是 Rabbit MQ,對上層業務是無感的,它會給上層業務一個統一抽象的 API ,而且是 HTTP 或者 gRPC 這樣的一個企業的 API 。開發人員不再關心底下到底是什麼,進一步地讓開發人員和下面進行解耦。