ncf的dapr应用实例的运行(代码片段)

dotNET跨平台 dotNET跨平台     2022-12-05     564

关键词:

简介

在进行今天的主要内容之前,先带大家了解一下Dapr

Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员都可以轻松构建在云和边缘上运行的弹性、无状态和有状态的应用程序,并包含语言和开发人员框架的多样性。

任何语言,任何框架,任何地方

今天,我们正在经历一波云采用浪潮。开发人员对 Web + 数据库应用程序架构感到满意,例如经典的 3 层设计,但对本质上分布式的微服务应用程序架构不满意。成为分布式系统专家很难,你也不应该这样做。开发人员希望专注于业务逻辑,同时依靠平台为他们的应用程序注入云原生架构的规模、弹性、可维护性、弹性和其他属性。

这就是 Dapr 的用武之地。Dapr 将构建微服务应用程序的最佳实践编入称为构建块的开放、独立 API,使您能够使用您选择的语言和框架构建可移植的应用程序。每个构建块都是完全独立的,您可以在应用程序中使用其中的一个、部分或全部。

使用 Dapr,您可以将现有应用程序逐步迁移到微服务架构,从而采用云原生模式,例如横向扩展/缩减、弹性和独立部署。

此外,Dapr 与平台无关,这意味着您可以在本地、任何 Kubernetes 集群、虚拟机或物理机以及 Dapr 集成的其他托管环境中运行您的应用程序。这使您能够构建可以在云和边缘运行的微服务应用程序。

云和边缘的微服务构建块

在构建微服务应用程序时有许多考虑因素。Dapr 在构建开发人员可以以标准方式使用并部署到任何环境的微服务应用程序时,为常用功能提供了最佳实践。它通过提供分布式系统构建块来做到这一点。

这些构建块 API 中的每一个都是独立的,这意味着您可以在应用程序中使用它们中的一个、部分或全部。

边车架构

Dapr 将其 HTTP 和 gRPC API 公开为 sidecar 架构,既可以作为容器也可以作为进程,不需要应用程序代码包含任何 Dapr 运行时代码。这使得与 Dapr 的集成很容易与其他运行时集成,并提供应用程序逻辑的分离以提高可支持性。

自托管本地开发

在自托管模式下,Dapr 作为一个单独的 sidecar 进程运行,您的服务代码可以通过 HTTP 或 gRPC 调用该进程。每个正在运行的服务都有一个 Dapr 运行时进程(或 sidecar),它被配置为使用状态存储、发布/订阅、绑定组件和其他构建块。

您可以使用Dapr CLI在本地计算机上运行启用 Dapr 的应用程序。下图显示了使用 CLIinit命令配置时 Dapr 的本地开发环境。

看完上述内容,我们大家需要有一个共识的概念就是,Dapr它是边车模式,下图中箭头所指的地方就是边车,是不是一下子就知道Dapr是什么样的印象了

你可以理解为是一些附加的服务,当然它也意味着,将是一个无所不能的服务。

知道NCF的小伙伴们都知道,不知道的小伙伴们可以到NCF Docs中去一睹NCF的真容。

NCF( NeuCharFramework)是一整套可用于构建基础项目的企业级通用 .NET 框架,
严格遵循 DDD 设计模式,包含了基础的缓存、数据库、模型、验证及配套管理后台,
高度模块化, 具有高度的可扩展性和耐造性。

NCF具有简单,灵活,可扩展的特性

现在给他加上Dapr,你可以想象一下,它将更大限度的为开发者伙伴提供更多的能力,下面我们就来看看NCF的Dapr版

步骤

  • 下载NCF源码

  • 打开Visual Studio,并打开Dapr分支源码

  • 修改数据库配置

  • 修改Redis配置

  • 编译项目docker-compose

  • 启动Docker

  • 检查Docker运行状态

  • 配置Docker共享文件夹目录

  • 运行

实施

  • 下载NCF源码

下载地址:https://github.com/NeuCharFramework/NCF

分支:Developer-front-DDD-Dapr-20220218

  • 打开Visual Studio,并打开Dapr分支源码

   打开源码后如图所示

  Senparc.Web      主运行项目

  XncfModules/    Xncf模块目录

  docker-compose    docker运行项目

  • 修改数据库配置

打开数据库配置文件

 修改Sql-Server节点的内容,如下所示

 修改这三个位置即可

  • 修改Redis配置

设置docker-compose为启动项

 如果启动的时候提示xxx容器不存在,则需要添加项目容器的支持,右键项目添加Docker支持

  需要查看docker容器运行中的redis中的配置信息

  • 编译项目docker-compose

  • 启动Docker

  • 检查Docker运行状态

 在Docker运行的桌面图标上右键,就能看到docker运行是否正常

  • 配置Docker共享文件夹目录

进入windows版,docker desktop主界面,看到如下图的设置图标,点击进入

 给共享的文件夹授权

 为什么要给文件夹授权呢,因为docker本身是一个容器环境,独立于本身的操作系统,如果要与操作系统中的文件夹通信或者传递,则需要用到共享,挂载等功能,因此需要共享文件夹

  • 运行

dapr简介(代码片段)

...件3.展望!dapr简介Dapr(DistributedApplicationRuntime)分布式应用运行时1Dapr是什么?Daprisaportable,event-drivenruntimethatmakesiteasyfordeveloperstobuildresilient,microservicestatelessandstatefulapplicationsthatrunonthecloudandedgeandembracesthediversityoflanguagesanddeveloperfra... 查看详情

集成dapr的azure容器应用(代码片段)

...的无服务器容器运行时,用于大规模构建和运行现代应用程序。从2021年11月2日起,Azure容器应用程序可在公共预览中使用。虽在服务到达GA之前,AzureContainerApps可能会发生变化。因此我们可以用来学习,不建议用... 查看详情

手把手教你学dapr-2.必须知道的概念(代码片段)

...;。这样的好处是与运行环境无关,且独立运行不需要应用包含Dapr运行时的代码。只需要通过SDK集成即可,这使得Dapr与应用的逻辑分离。Buildingblocks构建块 查看详情

[翻译]dapr长程测试和混沌测试(代码片段)

...a;https://github.com/dapr/test-infra/issues/11,在全天候运行的应用程序中保持Dapr可靠性至关重要。在部署真正的应用程序之前,可以通过在受控的混沌环境中构建,部署和操作此类应用程序来实现这种信心。测试应用程序所... 查看详情

dapr在java中的实践之环境准备(代码片段)

...轻松地构建运行在云和边缘上的弹性、无状态和有状态的应用程序,并支持语言和开发人员框架的多样性。Dapr利用Sidecar架构的优势,帮助我们解决构建微服务所带来的挑战,并保持代码与平台无关。从上面的架构图... 查看详情

分布式应用框架dapr(代码片段)

...vent-driven,portableruntimeforbuildingmicroservicesoncloudandedge.分布式应用运行时、事件驱动、为云和边缘构建微服务提供便携化运行时。我现在也不是很懂。dapr/daprGitHubDaprisaportable,serverless,event-drivenruntimethatmakesiteasyfordeveloperstobuildresilient,st... 查看详情

dapr集成flomesh实现跨集群服务调用(代码片段)

...和架构的不断演进,有着多运行时的态势:现代应用程序的基础能力不断地以独立运行时的方式从应用程序分离出来。这其中就有分布式应用运行时和服务网格两种运行时,今天这篇文章就为大家介绍Dapr与Flomesh服务... 查看详情

使用visualstudio2022调试dapr应用程序(代码片段)

使用Dapr编写的是一个多进程的程序,两个进程之间依赖于启动顺序来组成父子进程,使用VisualStudio调试起来可能会比较困难,因为VisualStudio默认只会把你当前设置的启动项目的启动调试。好在有VisualStudio扩展(MicrosoftC... 查看详情

dapr+.netcore实战状态管理(代码片段)

状态管理解决了什么分布式应用程序中的状态可能很有挑战性。例如:应用程序可能需要不同类型的数据存储。访问和更新数据可能需要不同的一致性级别。多个用户可以同时更新数据,这需要解决冲突。服务必须重试 ... 查看详情

dapr在java中的实践之状态管理(代码片段)

...nt)使用键值对作为存储机制,可以轻松的使长时运行、高可用的有状态服务和无状态服务共同运行在我们的服务中。我们的服务可以利用Dapr的状态管理API在状态存储组件中保存、读取和查询键值对。状态存储组件是可... 查看详情

dapr+.netcore实战服务调用(代码片段)

服务调用是什么在分布式应用程序中的服务之间进行调用会涉及到许多挑战。例如:维护其他服务的地址。如何安全地调用服务。在发生短暂的暂时性错误时如何处理重试。分布式应用程序调用链路追踪。服务调用构建块通... 查看详情

dapr+.net实战(十-终篇)k8s运行dapr(代码片段)

工作原理为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector、dapr-operator、dapr-placement和dapr-sentry服务。 dapr-operator:管理组件(statestores,pub/subs,etc.)dapr-sidecar-injector: 将Dapr注入 annotated pods,并 查看详情

dapr+.net实战secrets(代码片段)

什么是Secrets应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串、密钥等。通常这需要建立一个密钥存储,如AzureKeyVault、Hashicorp等,并在那里存储应用程序级别的密钥。要访问这些密钥存储,应... 查看详情

手把手教你学dapr-9.可观测性(代码片段)

...acing(跟踪)、Metrics(指标)、Logs(日志)和Health(运行状况)监控应用程序。分布式跟踪Dapr使用Zipkin协议进行分布式跟踪和Metrics收集。由于Zipkin协议的普遍性,许多后端都是开箱即用的,例如Stackdriver、Zipkin、NewRelic等。结合OpenT... 查看详情

为什么dapr是比springcloud和istio更优雅的微服务框架?(代码片段)

...缩写,非常精炼的解释了dapr是什么:dapr是一个为应用提供分布式能力的运行时。Dapr官网 https://dapr.ioDapr已经在多家大厂支撑生产环境随着各家大厂的IT系统规模扩大,微服务架构已经成为了必需品和标准品,这... 查看详情

手把手教你学dapr-5.状态管理(代码片段)

介绍使用状态管理,您的应用程序可以将数据作为键/值对存储在支持的状态存储中。您的应用程序可以使用Dapr的状态管理API使用状态存储组件来保存和读取键/值对,如下图所示。例如,通过使用HTTPPOST,您可以... 查看详情

dapr+net6+k8s最小原型项目架构和实现-11-使用aspnetcore6.0编写dapr项目(代码片段)

...目Service01新建HelloController定义一个API:api/hello每个Service01实例分配不同的InstanceIdAPI被访问时,返回InstanceId,来验证负载均衡效果usingMicrosoft.AspNetCore.Mvc;namespaceService01.Controllers[ApiController]publicclassHelloController:ControllerBase//每... 查看详情

手把手教你学dapr-4.服务调用(代码片段)

介绍通过使用服务调用,您的应用程序可以使用标准的gRPC或HTTP协议与其他应用程序可靠、安全地通信。为什么不直接用HttpClientFactory呢先问几个问题:如何发现和调用不同服务的方法如何安全地调用其他服务,并对... 查看详情