Dapr微服務應用開發系列0 概述

2022-01-31 20:15:04 字數 1638 閱讀 5946

題記:dapr是什麼,dapr包含什麼,為什麼要用dapr。

dapr(distributedapplicationruntime),是微軟azure內部創新孵化團隊的乙個開源專案,皆在解決微服務應用開發過程的一些共性問題。以官方文件的說法,dapr是乙個可移植、事件驅動的執行時,讓企業開發者更容易利用各種語言和框架構建柔性、無狀態和有狀態的微服務應用,並執行在雲端和邊緣。

dapr的核心由go語言寫成,開發團隊一開始有計畫使用.net core/c#來寫,但是考慮到社群的接受程度,遂最終選定go作為開發語言。當然,還是可以使用任何語言和框架來編寫dapr的擴充套件功能。由於dapr要解決的問題確實是大家面臨的一些痛點,並且dapr的設計也獨樹一幟,所以一經開源,就成為github上star增長最快的開源專案之一,甚至達到5k star的速率超過了kubernetes。

dapr做的事情很簡單,就是利用sidecar的模式,把**中的一些橫切關注點需求(cross-cutting)分離和抽象出來,從而達到執行環境的獨立對外部依賴(包括服務之間)的獨立

這種獨立的途徑就是使用開放協議(http和grpc)來代替依賴特定協議。如下圖所示:

從上圖我們可以看到,使用dapr開發的微服務應用理論上可以部署到任意的雲提供商、邊緣裝置、虛擬機器、service fabric集群、kubernetes集群裡面。

並且在如下方面(稱之為building block)進行外部依賴的抽象:

下圖很好的展示了以上獨立抽象的能力是如何通過sidecar模式實現的:

(sidecar程序模式)

(sidecar容器模式)

根據infoq的架構和設計技術趨勢報告(微服務已經成為軟體開發的主流。但是要開發微服務應用,大部分開發人員還是面臨諸多挑戰。根本原因在於我們更熟悉經典的3層架構,而對微服務這種分布式應用的開發經驗會顯得相對不足,很難應對分布式應用所要求的伸縮性、靈活性、可維護性等雲原生的特點。

dapr通過把一些構建微服務應用所需的最佳實踐內建到開放、獨立的building block中,讓開發人員更加專注於業務邏輯**的編寫,即可開發出功能強大的微服務應用。

更為重要的是,dapr還抽象了執行環境,避免微服務應用和執行環境強繫結(這也是很多團隊「假上雲」——僅使用vm的原因之一)。並且支撐dapr的執行環境不僅僅限於cloud,還有廣闊的edge。

毫無疑問,dapr獲得了很多使用者的青睞,官網上提到的geek+使用dapr構建了倉儲機械人的解決方案,willow使用dapr構建了智慧型鐵路管理系統。也還有很多大型企業正在採用dapr來構建他們的微服務應用,甚至國內某網際網路巨頭不僅計畫採用還積極參與了dapr社群的貢獻。

Dapr微服務應用開發系列1 環境配置

為了方便進行dapr開發,最好 其實不一定必須 首先在本機 開發機器 上安裝docker。安裝方式可以參考docker的官方文件 如果你是windows平台,那麼需要選擇linux容器模式。對於我這樣的windows 10使用者而言,個人建議最好的方式就是把windows 10公升級到2004,並啟...

微服務開發規範

版本號的格式為 a.b.c 又稱 major.minor.patch 遞增的規則為 a 表示主版本號,當 api 的相容性變化時,a 需遞增。b 表示次版本號,當增加功能時 不影響 api 的相容性 b 需遞增。c 表示修訂號,當做 bug 修復時 不影響 api 的相容性 c 需遞增。詳細的規則如...

微服務系列之 Feign服務整合

feign是宣告式的web service客戶端,它讓微服務之間的呼叫變得更簡單了,類似controller呼叫service。spring cloud整合了ribbon和eureka,可在使用feign時提供負載均衡的http客戶端。原理可能很多,但是用起來其實並不是那麼複雜。依賴新增 org.s...