Dapr旨在簡化彈性和可移植微服務的創建

Microsoft Dapr是一個開源的、事件驅動的框架,旨在爲雲計算和邊緣應用程序構建彈性和可移植的微服務。微軟表示,Dapr封裝了構建微服務的最佳實踐,並使開發人員可以專注於他們的應用程序的業務邏輯。

Dapr提供了一個事件驅動的運行時,它支持構建微服務所需的基本功能,比如服務調用、狀態管理和發佈/訂閱消息傳遞。此外,它還引入了許多更高級的特性。

Virtual actors旨在通過將狀態和行爲封裝在可以激活和停用的對象中來簡化異步計算的管理,並支持使用計時器來觸發代碼執行。actor 也可以是無狀態的。Dapr中的actor是虛擬的,這意味着它們在內存中的表示與actor身份和生命週期無關。特別是,可以在一段時間內不使用actor時自動回收它,並在首次請求它時創建。actor 還可以遷移到不同的節點,例如,當正在運行它們的節點發生故障時。爲了簡化併發處理,actor是單線程的,並且受制於基於回合的訪問策略。此外,Dapr運行時將使用超時來檢測和解決可能的死鎖。

Dapr還提供了一個高級的事件驅動模型,這個模型可以將數據庫、隊列和webhook等外部服務註冊爲觸發代碼執行的事件源,或者註冊爲事件消費者。這是通過綁定實現的,綁定簡化了與那些服務的交互,處理重試和失敗,並支持將應用程序從一個服務移植到另一個服務,而無需更改代碼。在撰寫本文時,當前的綁定還處於試驗階段

最後,Dapr還支持跨服務(內部或外部)的分佈式跟蹤。跟蹤不需要插裝應用程序代碼,因爲Dapr使用HTTP/gRPC中間件來攔截所有Dapr和應用程序流量,並自動注入相關ID以跟蹤分佈式事務。Dapr與OpenTelemetry兼容,後者支持使用許多後端,包括Azure Monitor、Datadog、Instana、Jaeger、SignalFX、Stackdriver、Zipkin以及其他等等。

Dapr架構遵循邊車模式,這意味着它的組件既可以作爲獨立的進程部署,也可以作爲提供隔離和封裝的容器部署,而且不需要在應用程序代碼中包含運行時。這使得將Dapr與其他運行時集成然後在Kubernetes環境中使用它變得很容易。

Dapr針對許多語言提供了SDK,包括 GoJava、 JavaScript、 Python,當然還有.NET。特定於語言的SDK以符合語言習慣的方式暴露Dapr API,並隱藏使用其HTTP/gRPC API的複雜性。

你可以使用主要操作系統可用的安裝腳本來安裝Dapr。在Linux下,你可以運行以下命令:

$ wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash

$ dapr init

然後你可以通過執行Dapr run在本地運行Dapr,或者配置Kubernetes集羣來利用它的自動伸縮能力。如果你打算在Kubernetes中使用Dapr,確保你也可以檢出最近針對Kubernetes發佈的微軟開放應用程序模型Open Application Model ,簡稱OAM)及其最初的實現Rudr。OAM和Rudr旨在幫助開發人員明確地定義他們的應用程序,使其與實現區分開來,並保持開發和部署之間的關注點分離。

原文鏈接:

Dapr Aims to Simplify the Creation of Resilient and Portable Microservices

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章