您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Dapr微服務的原理是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Dapr(Distributed Application Runtime),是微軟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)進行外部依賴的抽象:
<ul class=">下圖很好的展示了以上獨立抽象的能力是如何通過Sidecar模式實現的:
(Sidecar進程模式)
(Sidecar容器模式)
雖然Dapr暴露的所有能力都是基于開放協議HTTP和gRPC的,但是為了方便大家快速開發,目前還是提供了如下語言平臺的SDK:
同時,Dapr還可以和微軟開源的FaaS開發框架Azure Functions進行集成,Dapr開發團隊也基于Azure Logic App的邊緣運行時版本為微服務應用提供了Workflows的能力
根據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社區的貢獻。
關于Dapr微服務的原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。