微软开源微服务框架Dapr简介
Dapr概览
Dapr是⼀种可移植的,事件驱动的运⾏时,企业开发者通过它可快速地构建弹性的、有状态或⽆状态的微服务应⽤,这些应⽤可运⾏在云或边缘,并⽀持语⾔与框架的多样性。
跨语⾔, 跨框架, 跨环境
今天,我们正在经历⼀波云应⽤的浪潮,熟悉web+数据库传统架构的开发⼈员(如经典的3层架构)可能对于本质上是分布式应⽤的微服务架构感到困难。他们很难成为分布式系统的专家,也不应该成为,开发者希望聚焦于业务逻辑,⽽对于规模、弹性、可维护、以及其他云原⽣架构的能⼒应该由平台来注⼊。
这就是Dapr的⽤武之地,Dapr提供构建开放、独⽴的微服务应⽤的最佳实践,这些构件块可让你使⽤你所选择的语⾔或框架来构建可移植应⽤。每⼀个构件块都是完全独⽴的,你可以在你的应⽤中使⽤⼀个、部分或者所有。
此外,Dapr是平台⽆关的,这意味着你可以在本地、任何Kubernetes集以及其他集成Dapr的托管环境中运⾏,这可以让你的微服务应⽤运⾏在云或边缘节点上。
使⽤Dapr,你可以使⽤任何语⾔、任何框架构建你的微服务应⽤,并将它运⾏在任何环境中。
云与边缘计算微服务的构建块
在设计微服务架构的应⽤时需要考虑很多的问题,Dapr为微服务应⽤提供公共能⼒的最佳实践,开发⼈员可按标准⽅式使⽤这些能⼒并部署到任何的环境中。Dapr通过提供分布式系统构建块来实现这⼀⽬标。
这些构建块是独⽴的,你可以在应⽤中使⽤⼀个、部分或所有。在这个初始版本中,Dapr提供以下构建块:
• 服务调⽤弹性的服务到服务的端到端调⽤⽀持⽅法调⽤,包括重试,⽽不管这些服务位于所⽀持的那个托管环境中。• 状态管理通过状态管理来存储键值对状态,可以轻松地在应⽤程序中与⽆状态服务⼀起编写长时间运⾏的,⾼可⽤的有状态服务。状态的存储是插件化的,可以使⽤Azure CosmosDB, AWS DynamoDB 或者 Redis等其他⽅式。
• 事件驱动资源绑定通过向任何外部资源(如数据库、队列、⽂件系统等)接收和发送事件,在事件驱动的体系结构上进⼀步构建具有伸缩性和弹性的资源绑定。
• 服务间的分布式追踪Dapr⽀持符合W3C Trace Context标准的分布式跟踪,可⽅便地观察和诊断⽣产
中的服务调⽤。• ⾓⾊针对有状态或⽆状态对象的⾓⾊模式,通过⽅法和状态封装简化了并发处理。Dapr通过⾓⾊运⾏时提供了包括并发、状态、激活/失活⽣命周期管理以及定时器、提醒器来唤醒⾓⾊。
分布式和微服务的关系下图展⽰了由Dapr提供的分布式系统构建块,它通过标准API接⼝公开,开发者在其代码中可通过http或gRPC来调⽤。Dapr可与任何托管平台集成,例如Kubernetes,可使应⽤具有跨云与边缘的可移植性。
Sidecar架构
Dapr通过sidecar架构导出其API,⽆论是通过容器还是进程,⽆需在应⽤代码中包含任何Dapr运⾏时。这使Dapr易于与其他运⾏时集成,并提供了应⽤程序逻辑分离,提⾼了可移植性。
在基于容器的托管环境,如Kubernetes,Daper以sidecar容器的⽅式运⾏,与应⽤容器在同⼀个Pod中。
开发语⾔SDK及框架
为了在特定语⾔中更⾃然地使⽤Dapr,Dapr提供了Go、Java、Java、.NET以及Python等语⾔的SDK。这些SDK导出Dapr构建块的功能,如保存状态、发布事件或创建⼀个⾓⾊,这些操作通过特定语⾔类型化的⽅式导出⽽不⽤直接调⽤http/gRPC API的⽅式。这允许你在你所选择的语⾔中同时编写⽆状态、有状态以及⾓⾊功能。由于这些SDK共享Dapr 运⾏时,所以你可以获得跨语⾔的actor和功能⽀持。
在本地开发机器上以独⽴⽅式运⾏Dapr
你可以通过 Dapr命令⾏来运⾏本地服务.
以Kubernetes模式运⾏Dapr
Dapr可配置运⾏在任何Kubernetes 集. 在Kubernetes中, dapr-sidecar-injector 以及 dapr-operator 服务提供与Kubernetes环境的集成,将Dapr运⾏时以sidecar⽅式注⼊到应⽤Pod中,同时提供Dapr组件更新的通知,这些更新将⾃动分发到集中。
版权申明:本⽂来源于⽹友收集或⽹友提供,如果有侵权,请转告版主或者留⾔,本⽴即删除。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论