当前位置:首页 > 科技  > 软件

Dapr:用于构建分布式应用程序的便携式事件驱动运行时

来源: 责编: 时间:2023-11-17 08:50:22 200观看
导读简介:分布式应用程序变得越来越流行,因为它们比传统的整体应用程序具有许多优势。然而,构建和运行分布式应用程序可能非常复杂且具有挑战性。Dapr 是一个可移植的事件驱动运行时,可以轻松跨云和边缘构建和运行分布式应用

简介:

分布式应用程序变得越来越流行,因为它们比传统的整体应用程序具有许多优势。然而,构建和运行分布式应用程序可能非常复杂且具有挑战性。Dapr 是一个可移植的事件驱动运行时,可以轻松跨云和边缘构建和运行分布式应用程序。它提供了一组构建块,开发人员可以使用它们轻松构建和运行微服务、事件驱动应用程序和有状态应用程序。在这篇博文中,我们将介绍 Dapr 并讨论其优点和功能。我们还将向您展示如何通过构建简单的微服务应用程序来开始使用 Dapr。FYR28资讯网——每日最新资讯28at.com

什么是Dapr?

Dapr是一个可移植、事件驱动的运行时,使任何开发人员都可以轻松构建在云和边缘运行的弹性、无状态和有状态应用程序,并支持多种语言和开发框架。利用 sidecar 架构的优势,Dapr 可以帮助您应对构建微服务所带来的挑战,并使您的代码平台保持独立。分布式应用程序运行时简介:Dapr 是一种可移植、事件驱动的运行时,使任何开发人员都可以轻松构建在云和边缘运行的弹性、无状态和有状态应用程序,并支持多种语言和开发框架。任何语言、任何框架、任何地方:FYR28资讯网——每日最新资讯28at.com

FYR28资讯网——每日最新资讯28at.com

随着当前云采用的浪潮,Web + 数据库应用架构(例如经典的三层设计)更趋向于本质上是分布式的微服务应用架构。您不必成为分布式系统专家才能创建微服务应用程序。这就是 Dapr 的用武之地。Dapr 将构建微服务应用程序的最佳实践编入开放、独立的 API(称为构建块)中。Dapr 的构建模块:FYR28资讯网——每日最新资讯28at.com

  • 使您能够使用您选择的语言和框架构建可移植应用程序。
  • 是完全独立的
  • 对您的应用程序中使用的数量没有限制

使用 Dapr,您可以逐步将现有应用程序迁移到微服务架构,从而采用云原生模式,例如横向扩展/收缩、弹性和独立部署。Dapr 与平台无关,这意味着您可以运行您的应用程序:FYR28资讯网——每日最新资讯28at.com

  1. 本地
  2. 在任何 Kubernetes 集群上
  3. 在虚拟机或物理机上
  4. 在 Dapr 集成的其他托管环境中。

这使您能够构建可以在云和边缘运行的微服务应用程序。FYR28资讯网——每日最新资讯28at.com

托管环境

Dapr 可以托管在多种环境中,包括:

  • 在 Windows/Linux/macOS 机器上自托管,用于本地开发
  • 在 Kubernetes 或生产中的物理机或虚拟机集群上

自托管本地开发:

在自托管模式下,Dapr 作为单独的 sidecar 进程运行,您的服务代码可以通过 HTTP 或 gRPC 调用该进程。每个正在运行的服务都有一个 Dapr 运行时进程(或 sidecar),配置为使用状态存储、发布/订阅、绑定组件和其他构建块。您可以使用Dapr CLI在本地计算机上运行启用 Dapr 的应用程序。在下图中,Dapr 的本地开发环境是使用 CLIinit命令配置的。使用入门示例尝试一下这一点。FYR28资讯网——每日最新资讯28at.com

FYR28资讯网——每日最新资讯28at.com

Kubernetes:

Kubernetes 可用于:

  • 本地开发(例如,使用minikube和k3S),或者
  • 生产中。

在 Kubernetes 等容器托管环境中,Dapr 作为 sidecar 容器运行,应用程序容器位于同一 Pod 中。FYR28资讯网——每日最新资讯28at.com

Daprdapr-sidecar-injector和dapr-operator控制平面服务提供一流的集成:

  • 将 Dapr 作为 sidecar 容器在与服务容器相同的 pod 中启动
  • 提供集群中配置的 Dapr 组件更新通知

该dapr-sentry服务是一个证书颁发机构,可在 Dapr sidecar 实例之间启用相互 TLS 以实现安全数据加密,并通过Spiffe提供身份。有关该Sentry服务的更多信息,请阅读安全概述将支持 Dapr 的应用程序部署并运行到 Kubernetes 集群中就像向部署方案添加一些注释一样简单。FYR28资讯网——每日最新资讯28at.com

FYR28资讯网——每日最新资讯28at.com

实践和入门:

无论您的开发人员背景和选择的语言如何,该项目的启动和运行都非常容易。我能够按照入门指南在我的 MacOS 上立即运行各种快速入门。以下是我大致遵循的步骤。FYR28资讯网——每日最新资讯28at.com

安装 Dapr CLI:

Dapr CLI 是执行 Dapr 相关任务的主要工具,例如使用 Dapr 运行应用程序、查看日志、运行 Dapr 仪表板或将所有内容部署到 Kubernetes。FYR28资讯网——每日最新资讯28at.com

brew install dapr/tap/dapr-cli

安装 CLI 后,我们有几个不同的选项来安装和运行 Dapr。我将从要求最低且灵活的选项开始,并从那里开始进展。FYR28资讯网——每日最新资讯28at.com

选项 1:不使用 Docker 安装 Dapr:

这是运行 Dapr 的最轻量但不是最有用的方式。FYR28资讯网——每日最新资讯28at.com

dapr init - slim

在此精简模式下,机器上仅安装 daprd 和放置二进制文件,这足以在本地运行 Dapr sidecar。FYR28资讯网——每日最新资讯28at.com

运行 Dapr sidecar:

以下命令将启动一个名为 no-app 的 Dapr sidecar,在 HTTP 端口 3500 和随机 gRPC 端口上侦听。FYR28资讯网——每日最新资讯28at.com

dapr run - app-id no-app - dapr-http-port 3500

恭喜,您的第一个 Dapr Sidecar 正在运行。您可以通过以下命令查看 sidecar 实例:FYR28资讯网——每日最新资讯28at.com

Dapr list

查询其健康状态:

curl -i http://localhost:3500/v1.0/healthz

Dapr sidecar 应该与应用程序一起运行,而不是单独运行。让我们停止该实例并使用应用程序运行它。FYR28资讯网——每日最新资讯28at.com

dapr stop - app-id no-app

使用 Dapr sidecar 运行一个简单的应用程序FYR28资讯网——每日最新资讯28at.com

对于本演示,我们将使用一个简单的 NodeJS应用程序:FYR28资讯网——每日最新资讯28at.com

git clone https://github.com/dapr/samples.gitcd samples/hello-dapr-slimnpm install

这是 Dapr 的 Hello World 方式,其要点如下:FYR28资讯网——每日最新资讯28at.com

app.post('/neworder', bodyParser.json(), (req, res) => {  const data = req.body.data;  const orderId = data.orderId; res.status(200).send("Got a new order! Order ID: " + orderId); });

该应用程序有一个/neworder端点正在侦听端口3000。我们可以使用以下命令运行该应用程序和 sidecar:FYR28资讯网——每日最新资讯28at.com

dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 node app.js

该命令在端口 3000 上启动 NodeJS 应用程序,在 3500 上启动 Dapr HTTP 端点。一旦您在日志中看到应用程序已成功启动,我们就可以戳它。但我们不会直接在端口 3000 上访问 /neworder 端点,而是通过 sidecar 与应用程序交互。我们使用 Dapr CLI 来做到这一点,如下所示:FYR28资讯网——每日最新资讯28at.com

dapr invoke --verb POST --app-id nodeapp --method neworder --data '{"data": { "orderId": "41" } }'

并查看应用程序的响应。如果您注意到,CLI 只需要 app-id(而不是主机和端口)即可定位服务运行的位置。CLI 只是与服务交互的一种便捷方式。这似乎太神奇了,我们也可以使用简单的curl命令:FYR28资讯网——每日最新资讯28at.com

curl -XPOST -d @sample.json -H "Content-Type:application/json" http://localhost:3500/v1.0/invoke/nodeapp/method/neworder

此命令使用服务 Dapr 的调用 API 与应用程序同步交互。这是刚刚发生的情况的直观表示:FYR28资讯网——每日最新资讯28at.com

FYR28资讯网——每日最新资讯28at.com

通过 Dapr sidecar 调用端点

现在,通过请求路径上的 Dapr,我们可以获得 Daprized 服务调用的优势,例如重试、超时、断路器、并发控制等弹性策略;可观察性增强,例如:指标、跟踪、日志;安全增强功能,例如 mTLS、允许列表等。此时,您可以尝试元数据、指标端点、使用配置选项,或者在 Dapr 仪表板中查看单个微服务。FYR28资讯网——每日最新资讯28at.com

Dapr表板

我们运行的精简模式非常适合 Hello World 场景,但不是本地开发目的的最佳设置,因为它缺少状态存储、发布/订阅、度量服务器等。让我们使用之前的命令(或CTL +C),并删除 slim Dapr 二进制文件:FYR28资讯网——每日最新资讯28at.com

dapr卸载

要记住的一件事是,此命令不会删除通常位于 ~/.dapr 文件夹中的默认配置和组件规范文件。到目前为止,我们没有在步骤中创建任何文件,但如果您遵循其他教程并更改这些文件,它们将保留并应用于将来的每个 dapr 运行命令(除非被覆盖)。这给我带来了一些困惑,请记住。FYR28资讯网——每日最新资讯28at.com

选项 2:使用 Docker 安装 Dapr:

这是出于开发目的在本地运行 Dapr 的首选方式,但它需要 Docker。让我们来设置一下:FYR28资讯网——每日最新资讯28at.com

Dapr初始化

该命令将下载并运行 3 个容器FYR28资讯网——每日最新资讯28at.com

  • 与 actor 一起使用的 Dapr 放置容器(我希望这是一个可选功能)
  • Zipkin 用于从我们的 sidecar 收集跟踪信息
  • 以及用于状态存储、发布/订阅、分布式锁实现的单节点 Redis 容器。

您可以验证这些容器何时运行并准备好开始。FYR28资讯网——每日最新资讯28at.com

docker ps

运行快速入门:

我的下一步是尝试快速入门,演示服务调用、发布/订阅、状态存储、绑定等的构建块。这些快速入门的很棒之处在于,它们以多种方式演示相同的示例:FYR28资讯网——每日最新资讯28at.com

  • 使用 Dapr SDK,并且不依赖于 Dapr SDK,即仅使用 HTTP。
  • 多种语言:Java、Javascript、.Net、Go、Python 等。

您可以在同一示例中混合和匹配不同的语言和交互方法(SDK 或本机),以演示 Dapr 的多语言特性。FYR28资讯网——每日最新资讯28at.com

选项 3:在 Kubernetes 上安装 Dapr:

如果您已经走到这一步,您应该对 Dapr 可以为您做什么有一个很好的高层理解。下一步是在 Kubernetes 上部署 Dapr,其中大多数 Dapr 功能都可用并且最接近生产部署。为此,我在本地使用了 minikube,使用默认设置,没有自定义调整。FYR28资讯网——每日最新资讯28at.com

dapr init — kubernetes — 等待

如果成功,此命令将在 dapr-system 命名空间中启动以下 pod:FYR28资讯网——每日最新资讯28at.com

  • dapr-operator:管理状态存储、发布/订阅、配置等的所有组件
  • dapr-sidecar-injector:将 dapr sidecar 注入带注释的部署 Pod
  • dapr-placement:仅需要演员。
  • dapr-sentry:管理服务之间的 mTLS 并充当证书颁发机构。
  • dapr-dashboard:一个简单的 Web 应用程序,用于探索 Dapr 集群中正在运行的内容

这些 Pod 共同代表 Dapr控制平面。FYR28资讯网——每日最新资讯28at.com

注入 sidecar

从现在开始,将 Dapr sidecar 添加到应用程序(这将是 Dapr dataplane)就像将以下注释添加到 Kubernetes 部署一样简单:FYR28资讯网——每日最新资讯28at.com

 annotations:     dapr.io/enabled:“true”     dapr.io/app-id:“nodeapp ”     dapr.io/app-port:“3000 ”

该dapr-sidecar-injector 服务使用 dapr.io/enabled 注释监视新的 Pod,并daprd在 pod 内注入包含进程的容器。它还将 DAPR_HTTP_PORT 和 DAPR_GRPC_PORT 环境变量添加到您的容器中,以便它可以轻松与 Dapr 通信,而无需硬编码 Dapr 端口值。要在 Kubernetes 上部署完整的应用程序,我建议使用此分步示例。它有一个提供者和消费者服务,它对我来说第一次起作用。FYR28资讯网——每日最新资讯28at.com

透明代理与显式代理:

请注意,Dapr sidecar 注入的侵入性比具有透明 sidecar 的典型服务网格(例如 Istio 的 Envoy)的侵入性要小。为了注入透明代理,Pod 通常还会注入一个在 Pod 启动时运行的 init 容器,并重新配置 Pod 网络规则,以便所有入口和出口流量或应用程序容器都通过 sidecar。对于 Dapr,情况并非如此。注入了一个 sidecar,但您的应用程序可以控制何时以及如何通过其定义良好的显式(非透明)API 与 Dapr 进行交互。透明服务网格代理在运营团队通常使用的较低网络层运行,而 Dapr 提供开发人员所需的应用程序层原语。如果您对此主题感兴趣,这里很好地解释了 Dapr 与服务网格的差异和重叠。FYR28资讯网——每日最新资讯28at.com

概括:

总之,Dapr 作为一个多功能且事件驱动的运行时出现,为构建分布式应用程序提供了一个适合初学者的解决方案。凭借其便携性和对简化开发复杂性的重视,Dapr 使新手能够无缝地驾驭构建分布式系统的复杂性。作为初学者指南,这篇文章阐明了 Dapr 的基本功能,为开发人员踏上分布式应用程序开发领域的旅程提供了一个途径。FYR28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-27611-0.htmlDapr:用于构建分布式应用程序的便携式事件驱动运行时

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 简洁编程之道,十个Python Itertools方法助你事半功倍

下一篇: 业内人士:台积电获得主要云服务厂商AI芯片订单 包括微软5nm芯片订单

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 小米官宣:2023年上半年出货量中国第一!

    小米官宣:2023年上半年出货量中国第一!

    今日早间,小米电视官方微博带来消息,称2023年小米电视上半年出货量达到了中国第一,同时还表示小米电视的巨屏风暴即将开始。“公布一个好消息2023年#小米电视上半年出货量中国
  • vivo TWS Air开箱体验:真轻 臻好听

    vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • 在线图片编辑器,支持PSD解析、AI抠图等

    在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • .NET 程序的 GDI 句柄泄露的再反思

    .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • JVM优化:实战OutOfMemoryError异常

    JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 网红炒股不为了赚钱,那就是耍流氓!

    网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
Top