Dapr是如何簡化微服務的開發和部署
基於微服務設計模式的現代應用程式面臨著一系列挑戰。微服務需要有一個強大的服務發現機制來實現動態連線。它們需要鬆散耦合,實現自主性和獨立縮放。微服務需要支援多種語言,其中每個服務都是以最合適的語言、框架和執行時實現的。儘管採用容器和編排引擎(如 Kubernetes)可以應對打包、部署和擴充套件方面的挑戰,但開發過程仍然很複雜。微軟釋出的分散式應用程式執行時 (Dapr) 開發現代應用程式的新方法來應對微服務開發的複雜性,這是微服務和雲原生應用程式的一個平臺和語言無關的執行時。
Dapr 的體系結構對於開發人員來說非常迷人,尤其是那些熟悉 20 世紀 90 年代 COM 或 EJB 的開發人員。與 COM/DCOM 和 EJB 為在 Windows 和 Java 上執行的分散式應用程式提供管道的方式類似,Dapr 基於容器化、雲原生、微服務的應用程式所需的繁重工作。Dapr 有三大元素:執行時、 服務構建塊和SDK
Dapr 執行時可以安裝在任何可以執行 Docker 的計算機上。核心執行時是容器化的,可以部署在執行 Linux、Windows 或 Mac 作業系統的 x86/ARM 處理器上。它也可以安裝在多節點 Kubernetes 群集中,也可以安裝在資源受限的邊緣裝置(如樹莓派)上。唯一的要求是主機環境 能夠執行 Docker。
Dapr 使得使用在同一主機、內部或外部資料服務以及基於 pub/sub 模式的訊息傳遞服務中執行的其他微服務變得非常簡單。由於 Dapr 使用Sidecar 模式,因此可以輕鬆地整合在 Kubernetes 上執行的微服務,以利用構建基塊。Dapr 構建基塊充當配置為元件的內部/外部服務提供商和內部使用者之間的中間層。由於每個服務的使用者始終與一個眾所周知的終結點通訊,Dapr 只需將呼叫重定向到當前配置的元件。
上圖是狀態構建基塊元件封裝構建基塊 API 的實現。狀態構建基塊的實現可能包括 Redis、etcd、MongoDB、Amazon DynamoDB 和 Azure CosmosDB。許多元件是可插拔的,因此一個實現可以很容易地換換到另一個實現。
為了使不同語言使用 Dapr 更自然,它還包括用於 Go、Java、JavaScript、.NET 和 Python 的語言特定 SDK。這些 SDK 通過語言封裝的 API 而不是呼叫標準 http/gRPC API 公開 Dapr 構建基塊中的功能,例如儲存狀態、釋出事件或建立Actor。這使開發人員能夠用自己選擇的語言編寫無狀態和有狀態函式和參與者的組合。
Dapr 將一些經過驗證的技術和最佳實踐帶到微服務開發中。它通過即插即用模型將90 年代的資料驅動的客戶端/伺服器應用程式的操作,用於 現代雲原生應用程式所需的最常見服務。
相關文章:
- Dapr 已在塔架就位 將發射新一代微服務
- 牛年 dotnet雲原生技術趨勢