微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目

开始使用Dapr Windows文档: 开始使用 Dapr | Microsoft Docs

第一步 安装Dapr CLI 安装Dapr CLI文档:Install the Dapr CLI | Dapr Docs

Windows 安装 

在PowerShell 执行 

powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"

结果如下:

微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目_第1张图片

 安装可能遇到的问题:

如果遇到 未能解析此远程名称: 'raw.githubusercontent.com'问题 是因为没有开启VPN 开启VPN 重新尝试执行该语句

第二步 验证Dapr是否安装成功

重新打开Power Shell终端 然后输入

dapr

结果如下:

微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目_第2张图片

 则代表Dapr安装成功,

接下来安装Docker Desktop

Docker Desktop下载地址(根据自己的需求下载)Releases · docker/compose · GitHub

这里主要介绍如何启动Dapr 安装Docker Desktop不详细介绍  说一下安装Docker Desktop可能遇到的问题 

报错WSL 2 installation is incomplete. 解决办法 解决办法链接

Docker requires log out 重启一下电脑再启动 Docker 方可解决问题

第三步 初始化Dapr 官网地址

1.以管理员身份运行Windows PowerShell终端 

2.运行init 命令

dapr init

成功会显示

Making the jump to hyperspace...
Container images will be pulled from Docker Hub
Installing runtime version 1.8.2
Downloading binaries and setting up components...
Downloaded binaries and completed components set up.
daprd binary has been installed to C:\Users\Administrator\.dapr\bin.
dapr_placement container is running.
dapr_redis container is running.
dapr_zipkin container is running.
Use `docker ps` to check running containers.
Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started

3.验证Dapr版本

dapr --version

结果显示

CLI version: 1.8.0
Runtime version: 1.8.2

4.验证Docker是否在运行 

docker ps

显示结果为

CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS                        PORTS                              NAMES
1d8513e294e7   openzipkin/zipkin        "start-zipkin"           About a minute ago   Up About a minute (healthy)   9410/tcp, 0.0.0.0:9411->9411/tcp   dapr_zipkin
9015e2eb2d4b   daprio/dapr:1.8.2        "./placement"            2 minutes ago        Up About a minute             0.0.0.0:6050->50005/tcp            dapr_placement
3e48adf8b694   redis                    "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes                  0.0.0.0:6379->6379/tcp             dapr_redis
a54356dd5ac3   docker/getting-started   "/docker-entrypoint.…"   26 minutes ago       Up 26 minutes                 0.0.0.0:80->80/tcp                 determined_cartwright

第四步 安装.net 6 SDK 下载链接

第五步 开始生成 Dapr应用程序

建议打开 Visual Studio Code  使用其终端功能 导航到你要放置项目的文件夹下 

如图微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目_第3张图片

输入 eSummerShopDapr 为文件夹名字 可随意起名

dotnet new console -o eSummerShopDapr

结果如图

 微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目_第4张图片

接下来导航到你刚刚创建的文件夹中

cd eSummerShopDapr

使用Dotnet run命令运行新创建的应用程序

dotnet run

结果如下

 

第六步 添加 Dapr 状态管理

这块比较有关Dapr的概述 我会单独写一篇文章解释一下Dapr状态管理 

官网文档  State management overview | Dapr Docs

1. 打开Windows PowerShell终端窗口

导航到刚刚你创建的项目文件夹下

添加Dapr.Client NuGet包

dotnet add package Dapr.Client

如图

PS C:\Users\Administrator> cd e:
PS E:\> cd eSummerShop
PS E:\eSummerShop> cd eSummerShopDapr
PS E:\eSummerShop\eSummerShopDapr> dotnet add package Dapr.Client
  正在确定要还原的项目…
  Writing C:\Users\Administrator\AppData\Local\Temp\tmpCCC0.tmp
info : 正在将包“Dapr.Client”的 PackageReference 添加到项目“E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj”。
info :   GET https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0
info :   OK https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0 374 毫秒
info : 正在还原 E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj 的包...
info :   GET https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0
info :   OK https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0 891 毫秒
info :   GET https://www.nuget.org/api/v2/package/Dapr.Client/1.8.0
info :   OK https://www.nuget.org/api/v2/package/Dapr.Client/1.8.0 1873 毫秒
info : 已通过内容哈希 qrabRYmtZ0tlv7EZFi+fZFNad9tZsn1WQr24PAXMkMyPtcQtMfgYWY/h2N1MuUFAb7LBYZANyBcNoAJRnsjj/Q== 从 https://www.nuget.org/api/v2/ 安装 Dapr.Client 1.8.0 。
info : 包“Dapr.Client”与项目“E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj”中指定的所有框架均兼容。
info : 包“Dapr.Client”(版本为 1.8.0)的 PackageReference 已添加到文件“E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj”。
info : 将资产文件写入磁盘。路径: E:\eSummerShop\eSummerShopDapr\obj\project.assets.json
log  : 已还原 E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj (用时 3.58 sec)。

使用随意编辑器打开项目文件夹中的Program 这里我使用的是 VS2022 Preview

微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目_第5张图片

 将代码更新成 

using Dapr.Client;

const string storeName = "statestore";
const string key = "counter";

var daprClient = new DaprClientBuilder().Build();
var counter = await daprClient.GetStateAsync(storeName, key);

while (true)
{
    Console.WriteLine($"Counter = {counter++}");

    await daprClient.SaveStateAsync(storeName, key, counter);
    await Task.Delay(1000);
}

作用

  • 首先,会实例化一个新的 DaprClient 实例。 此类使你能够与 Dapr 挎斗进行交互。
  • 从状态存储中,DaprClient.GetStateAsync 会提取 counter 键的值。 如果该键不存在,会返回 int 的默认值(即 0)。
  • 然后,代码将循环访问,将 counter 值写入控制台并将递增的值保存到状态存储中

接下来 使用Dapr CLI run命令将启动应用程序

dapr run --app-id DaprCounter dotnet run

结果

微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目_第6张图片

 尝试停止并重新启动应用程序。 你将看到计数器未重置。 相反,它会从之前保存的状态继续。 Dapr 构建块使应用程序具有状态。

状态储存在Dapr初始化 自动预配的一个Redis容器 Dapr 使用一个名为 statestore.yaml 的组件配置文件将 Redis 容器配置为默认的状态存储组件

为什么会突然出现一个名字叫statestore.yaml?

因为刚刚我们在Program文件重新更新的代码storeName为statestore

在 Windows 上,默认组件配置文件存储在 %USERPROFILE%\.dapr\components 文件夹中。

打开我的电脑 直接将 %USERPROFILE%\.dapr\components 复制到路径回车自动进入

打开statestore.yaml 具体内容如下

微服务 安装 Dapr Dapr快速入门 建立一个简单的Dapr项目_第7张图片

 在生产环境中定义一个Namespace 在自托管模式下 通过设置NameSpace环境变量来指定Dapr挎斗的命名空间 。 配置后,Dapr 挎斗将仅加载与该命名空间相匹配的组件。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
  namespace: production
spec:
  type: state.redis
  version: v1
  metadata:
  - name: redisHost
    value: localhost:6379
  - name: redisPassword
    value: ""
  - name: actorStateStore
    value: "true"

如果需要,可以进一步将组件限制到特定的应用程序。 在 production 命名空间中,可能需要将 Redis 缓存的访问限制为仅限 DaprCounter 应用程序。 为此,请在组件配置中指定 scopes。 下面的示例演示如何将 Redis statestore 组件的访问限制为 production 命名空间中的应用程序 DaprCounter

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
  namespace: production
spec:
  type: state.redis
  version: v1
  metadata:
  - name: redisHost
    value: localhost:6379
  - name: redisPassword
    value: ""
  - name: actorStateStore
    value: "true"
  scopes:
  - DaprCounter

简单的Dapr应用就跑起来啦 接下来将会更新生成多容器 Dapr 应用程序

你可能感兴趣的:(微服务Dapr,微服务,架构,云原生)