Dapr是一個可移植,事件驅動的運行時。它使開發人員簡單地去構建運行在雲和edge上彈性、無狀態和有狀態的應用,並且包含多種語言和開發人員框架。
Any language, any framework, anywhere
今天,我們正在經歷一波雲應用浪潮。開發人員熟悉web +數據庫應用程序架構(例如經典的3層設計),但不熟悉本質上是分布式的微服務應用程序架構。成為分布式系統專家很難,你也不應該這樣做。開發人員希望專注於業務邏輯,同時依靠平台為他們的應用程序注入伸縮性、彈性、可維護性、彈性和其他本地雲架構的屬性。
這就是Dapr的用武之地。Dapr將構建微服務應用程序的最佳實踐編入開放的、獨立的構建塊中,使您能夠使用自己選擇的語言和框架構建可移植的應用程序。每個構建塊都是完全獨立的,您可以在應用程序中使用其中的一個、一些或全部。
此外,Dapr與平台無關,這意味着您可以在任何Kubernetes集群和其他與Dapr集成的托管環境上本地運行應用程序。這使您能夠構建可以在雲和edge上運行的微服務應用程序。
Microservice building blocks for cloud and edge
在設計微服務應用程序時需要考慮很多因素。在構建開發人員可以以標准方式使用並部署到任何環境的微服務應用程序時,Dapr為通用功能提供了最佳實踐。它通過提供分布式系統構建塊來實現這一點。
每個構建塊都是獨立的,這意味着您可以在應用程序中使用其中的一個、部分或全部。在這個dpr的初始版本中,提供了以下構建模塊:
構建塊(Building Block) |
描述 |
Service-to-Service invocation (服務間調用) |
彈性的服務間調用,支持方法調用,包括重試,無論遠程服務位於受支持的托管環境中哪個位置 |
State management (狀態管理) |
有了用於存儲鍵值對的狀態管理,就可以在應用程序中輕松編寫無狀態服務和長時間運行的、高可用的有狀態服務。狀態存儲是可擴展的,包括Azure CosmosDB、Azure SQL Server、PostgreSQL、AWS DynamoDB或Redis等。 |
Publish and subscribe (發布和訂閱) |
發布事件以及訂閱主題 |
Resource bindings (資源綁定) |
帶有觸發器的資源綁定進一步構建在事件驅動的架構上,通過接受和發送事件到任何外部源(例如數據庫、隊列、文件系統等),以實現伸縮與彈性。 |
Actors |
一種用於有狀態和無狀態對象的模式,通過方法和狀態封裝使並發變得簡單。 Dapr在其參與者運行時中提供了許多功能,包括並發性、狀態、參與者激活/去激活的生命周期管理以及喚醒參與者的計時器和提醒。 |
Observability (可觀察性) |
Dapr 傳輸指標、日志和跟蹤,以調試和監視Dapr和用戶應用程序。Dapr支持分布式跟蹤,使用W3C跟蹤上下文標准和將開放遙測技術發送到不同的監控工具,從而方便地診斷和服務生產中的服務間調用。 |
Secrets (隱私) |
Dapr提供隱私管理,並與公共雲和本地秘密存儲集成,以檢索用於應用程序代碼的隱私 |
Sidecar architecture
Dapr將其API公開為sidecar體系結構,可以作為容器、也可以作為進程,不需要應用代碼包含任何的dapr運行時代碼。
Hosting Environments
Dapr可以托管寄宿在多個環境下,包括用於本地開發的自托管,或是部署到VM,K8S、Azure IOT edge等環境中。
Self hosted
在自托管模式下,Dapr作為隔離的side-car進程運行,你的服務代碼可以通過HTTP或是gRPC調用。在自托管模式下,你也可以將Dapr部署在一組VM上。
Running Dapr on a local developer machine in self hosted mode
可以將Dapr配置為在本地開發人員機器上以自托管模式運行。每個正在運行的服務都有一個Dapr運行時進程(或sidecar),它被配置為使用狀態存儲、發布/訂閱、綁定組件和其他構建塊。您可以使用Dapr CLI在本地機器上運行啟用了Dapr的應用程序。
Kubernetes hosted
在容器托管環境下,例如K8S,Dapr作為side-car容器運行與應用容器在相同的pod上。
Running Dapr in Kubernetes mode
可以將Dapr配置為在任何Kubernetes集群上運行。在Kubernetes中,Dapr-sidecar注入器和Dapr-operator 服務提供了一流的集成,將Dapr作為一個sidecar容器作為服務容器在同一個pod中啟動,並提供Dapr組件更新到集群中的通知。Dapr -sentry服務是一個證書頒發機構,它支持Dapr sidecar實例之間的相互TLS,以實現安全數據加密。