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


題記:Dapr是什么,Dapr包含什么,為什么要用Dapr。

Dapr是什么

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

Dapr的核心由Go語言寫成,開發團隊一開始有計划使用.NET Core/C#來寫,但是考慮到社區的接受程度,遂最終選定Go作為開發語言。當然,還是可以使用任何語言和框架來編寫Dapr的擴展功能。由於Dapr要解決的問題確實是大家面臨的一些痛點,並且Dapr的設計也獨樹一幟,所以一經開源,就成為GitHub上Star增長最快的開源項目之一,甚至達到5K Star的速率超過了Kubernetes。

 

 

Dapr包含什么

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

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

 

 

從上圖我們可以看到,使用Dapr開發的微服務應用理論上可以部署到任意的雲提供商、邊緣設備、虛擬機、Service Fabric集群、Kubernetes集群里面。

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

  • 服務之間的調用:不用操心服務注冊和發現的問題,也不用操心重試等問題
  • 狀態的存儲:通過鍵值對來存儲應用邏輯的狀態,讓無狀態服務變為有狀態服務
  • 事件的發布訂閱:微服務之間除了直接的遠程調用外,更多是依賴事件驅動的模式去產生關系,這里對事件發布訂閱進行了統一
  • 外部資源的綁定:當需要把事件發布到微服務應用外部,或者從外部接收事件的時候,就可以使用資源綁定
  • Actors模式:通過Actors的模式,讓微服務可以以單線程的代碼實現大規模並行處理。實際上,Actors這部分功能的開發人員就是來自於Service Fabric團隊,兩者的API也基本保持一致。通過這樣的模式,也把Actors這種模式引入到了其他運行平台
  • 可觀測性:Dapr會幫助微服務應用發出基於W3C Trace Context標准和Open Telemetry規范的度量、日志、跟蹤信息,方便對應用進行調試、診斷和監控
  • 密鑰管理:為微服務提供密鑰管理的能力,從而從依賴的外部密鑰管理服務中獨立出來。

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

(Sidecar進程模式)

 

 

(Sidecar容器模式)

 

 

雖然Dapr暴露的所有能力都是基於開放協議HTTP和gRPC的,但是為了方便大家快速開發,目前還是提供了如下語言平台的SDK:

  • C++ SDK
  • Go SDK
  • Java SDK,可以和Spring Boot集成
  • Javascript SDK,可以和Express集成
  • Python SDK,可以和Flask集成
  • .NET SDK,可以和ASP.NET Core集成

同時,Dapr還可以和微軟開源的FaaS開發框架Azure Functions進行集成,Dapr開發團隊也基於Azure Logic App的邊緣運行時版本為微服務應用提供了Workflows的能力

為什么要用Dapr

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

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

更為重要的是,Dapr還抽象了運行環境,避免微服務應用和運行環境強綁定(這也是很多團隊“假上雲”——僅使用VM的原因之一)。並且支撐Dapr的運行環境不僅僅限於Cloud,還有廣闊的Edge。

毫無疑問,Dapr獲得了很多用戶的青睞,官網上提到的Geek+使用Dapr構建了倉儲機器人的解決方案,Willow使用Dapr構建了智能鐵路管理系統。也還有很多大型企業正在采用Dapr來構建他們的微服務應用,甚至國內某互聯網巨頭不僅計划采用還積極參與了Dapr社區的貢獻。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM