当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

Dapr

云和边缘计算的微服务构件
授权协议 MIT
开发语言 Google Go
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 不详
投 递 者 储法
操作系统 跨平台
开源组织 微软
适用人群 未知
 软件概览

Dapr(Distributed Application Runtime ,分布式应用运行时)是微软新推出的,一种可移植的、serverless 的、事件驱动的运行时,它使开发人员可以轻松构建弹性,无状态和有状态微服务,这些服务运行在云和边缘上,并包含多种语言和开发框架。

Dapr 整理了构建微服务应用为开放,独立的构建块的最佳实践,使用户能够使用自己选择的语言和框架来构建可移植的应用程序。每个构建块都是独立的,用户可以在应用中使用其中的一个或多个。

注意:Dapr 目前正处于 Alpha 阶段的社区开发中。在 1.0 稳定版本之前,不建议将 Dapr 用于生产工作负载。

Dapr 的功能和定位概括图:

  • 最底下基础设施是各种云平台(主流公有云都支持)或者边缘环境
  • 其上是 dapr 提供的分布式能力,dapr 称之为“building block”。
  • 这些 building block 的能力,以统一的 API(支持 HTTP 和 gRPC)对外提供服务
  • 应用可以用各种语言编写,然后通过 dapr 提供的 API 使用这些能力,dapr 也提供客户端类库来简化对 API 的调用,实现了多语言的支持。

Dapr 提供的具体分布式能力(building block)如下图所示:

具体内容可查看 Dapr 官方文档:https://github.com/dapr/docs/tree/master/concepts

目标

  • 使开发人员可以使用任何语言或框架来编写分布式应用程序
  • 通过提供最佳实践构建块来解决开发人员构建微服务应用程序时遇到的难题
  • 社区驱动,开放并与供应商无关
  • 获得新的贡献者
  • 通过开放的 API 提供一致性和可移植性
  • 跨云和边缘与平台无关
  • 拥抱可扩展性并提供可插入组件,而无需供应商锁定
  • 通过高性能和轻量级实现物联网和边缘场景
  • 可以从现有代码中逐步采用,而没有运行时依赖

特征

  • 具有可插入提供程序和至少一次语义的事件驱动的 Pub-Sub 系统
  • 使用可插入提供程序的输入和输出绑定
  • 具有可插拔数据存储的状态管理
  • 一致的服务到服务发现和调用
  • 选择加入状态模型:强大/最终一致性,首次写入/最后写入获胜
  • 跨平台虚拟演员
  • 机密管理可从安全密钥库中检索机密
  • 限速
  • 内置可观察性支持
  • 使用专用的 Operator和CRD 在 Kubernetes 上本地运行
  • 通过 HTTP 和 gRPC 支持所有编程语言
  • 来自 Azure、AWS、GCP 的 Multi-Cloud、开放式组件(绑定,发布-订阅,状态)
  • 作为过程或容器化在任何地方运行
  • 轻量级(58MB 二进制,4MB 物理内存)
  • 作为辅助工具运行-无需特殊的SDK或库
  • 专用的CLI-易于调试的开发人员友好体验
  • Java、.NET Core、Go、Javascript、Python、Rust 和 C ++ 的客户端
  • 版本发布与简介:https://www.infoq.cn/article/m1hMST70ck2VB3GKNM39 官网:https://docs.dapr.io/ github: https://github.com/dapr/dapr/releases/tag/v1.0.0 Notes why Writing high performance, scalable and reliable di

 相关资料
  • TBD 参考 The Birth of an Edge Orchestrator – Cloudify Meets Edge Computing K8s(Kubernetes) and SDN for Multi-access Edge Computing deployment

  • 我正在将一个整体应用程序重新设计成一个微服务架构,并希望使用谷歌云平台(GCP)来承载整个解决方案。我很难理解他们的成本细分,并担心我的成本将无法控制后,我建立它。这是一个个人项目,但我希望将有许多用户后,我推出,所以我想得到底层架构的权利,同时有合理的成本,最初当我推出。 下面是我的架构: 微服务1-4(共4个API服务): 在App Engine上运行 公开REST API并将数据保存到Dat

  • 我使用spring boot Framework创建了一个REST微服务。 我还创建了一个Eureka服务器作为另一个Spring Boot项目。并且我向Eureka服务器注册了微服务。 和我为Zuul创建了另一个Spring启动项目。这个项目也注册到Eureka服务器。 我的Eureka服务器正在运行2个注册的Spring Boot项目。Eureka服务器UI正常工作。 这里我的困惑是,我是按照

  • 让我们讨论一下微服务环境的体系结构。我们正在公司内部进行讨论,我想得到一些反馈。我认真考虑的是编排层(代码复制、更多移动部件改变api)。 网络应用- 原料药- 在这种情况下,服务不允许相互对话。业务流程层中的聚合服务 网络应用- 原料药- 这里允许服务相互对话,这里存在聚合服务。 账单属于哪里

  • 面试约的五一前的最后一个工作日晚上7点,电话面,上来面试官就道歉,说约面的时候没考虑到要放假了。 自我介绍 分布式锁相关 问项目里面是怎么使用到redis的?(缓存, 分布式锁,做抢单) 如果不用redis,怎么做抢单?(答:可以用go的channel做异步) 如果不用channel呢,可以用什么设计模式?(没回答上,面试官说用单例模式) MySQL怎么实现分布式锁?(唯一key) 除了唯一Key

  • 我是测微计新手。有人能告诉我如何在spring boot中集中管理微服务指标吗? 在哪里可以获得influxdb中所有注册的服务信息、矩阵和存储的度量?

  • 我正在使用一个简单的Gremlin RESTful服务器,并在POST请求中发送简单的命令。例如,如果我想创建边(以我的特定格式),我有以下模板: const nodeCommandFormat=“graph.addVertex('%s','%s','evid','%s');” ; 用这样的链式命令发送一个长字符串效果很好,所有的边都被创建了。我的问题是:为什么它不适用于边缘创建?直到现在,我尝试

  • Kubernetes 设计之初就是按照 Cloud Native 的理念设计的,Cloud Native 中有个重要概念就是微服务的架构设计,当将单体应用拆分微服务后, 随着服务数量的增多,如何微服务进行管理以保证服务的 SLA 呢?为了从架构层面上解决这个问题,解放程序员的创造性,避免繁琐的服务发现、监控、分布式追踪等事务,Service mesh 应运而生。 微服务 下图是Bilgin Ibr