zoukankan      html  css  js  c++  java
  • 微服务Dapr:window环境下的快速入门

    一、安装Dapr CLI脚手架

    开始下载并安装 Dapr CLI,使用powershell,输入以下的语句安装:

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

    但是一般会报错如下,意思就是被墙了,要FQ才行:

    iwr : 未能解析此远程名称: 'raw.githubusercontent.com'
    所在位置 行:1 字符: 1 + iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/i ...    
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest],WebExce
    ption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

    FQ后再次执行,出现以下提示:

    PS D:> powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
    
    PowerShell requires an execution policy of 'RemoteSigned'.
    To make this change please run:
    'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'

    按照提示我们需要执行策略更改,如下,输入Y确认即可:

    PS D:> Set-ExecutionPolicy RemoteSigned -scope CurrentUser
    
    执行策略更改
    执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
    [Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“N”): Y

    再次执行安装就安装成功了,默认安装在C:dapr目录下,我们将此目录添加至用户PATH环境变量中。

     此处看到已经默认添加了,我们就不用添加了,打开新的powershell后输入dapr命令验证,成功显示如下

     二、初始化Dapr

     用管理员权限运行powershell,输入dapr --version命令查询dapr版本如下:

    PS C:> dapr --version
    CLI version: 1.2.0
    Runtime version: n/a

     可以看到Runtime version没有显示,说明dapr运行时没有安装,我们输入dapr init命令,显示如下提示:

    PS C:> dapr init
    Making the jump to hyperspace...
    could not connect to Docker. Docker may not be installed or running

    说明链接不到docker,我们运行docker后再次输入dapr init命令,但是报了403权限问题无法安装,多试几次就成功了(这里打个问号?),也可以查到版本号了:

    PS C:> dapr init
    Making the jump to hyperspace...
    Downloading binaries and setting up components...
    cannot get the latest release version: https://api.github.com/repos/dapr/dapr/releases - 403 Forbidden
    PS C:> dapr init
    Making the jump to hyperspace...
    Downloading binaries and setting up components...
    Downloaded binaries and completed components set up.
    daprd binary has been installed to C:UsersXu.daprin.
    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
    PS C:> dapr --version
    CLI version: 1.2.0
    Runtime version: 1.2.2

     之后通过docker ps命令查看安装的容器,需要确保镜像为daprio/dapr、openzipkin/zipkin和redis的容器都运行

    PS C:> docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                              NAMES
    26af89c8762c        daprio/dapr         "./placement"            5 minutes ago       Up 5 minutes             0.0.0.0:6050->50005/tcp            dapr_placement
    df646eb3b33a        openzipkin/zipkin   "start-zipkin"           5 minutes ago       Up 5 minutes (healthy)   9410/tcp, 0.0.0.0:9411->9411/tcp   dapr_zipkin
    4a28c3982d6b        redis               "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes             0.0.0.0:6379->6379/tcp             dapr_redis

     在dapr inti时,CLI 还创建了一个默认组件文件夹,其中包括几个 YAML 文件,其中包含state store、elevated 和 zipkin。 Dapr sidecar, 将读取这些文件。 告诉它使用Redis容器进行状态管理和消息传递,以及Zipkin容器来收集跟踪。

     可以通过运行cmd,在文件管理器中打开如下:

    explorer "%USERPROFILE%.dapr"

    将会看到Dapr 配置、 Dapr 二进制目录和 Dapr 的默认组件目录

     三、使用Dapr的内置api

    运行以下命令以启动 Dapr sidecar,它将在端口 3500 上监听名为 myapp 的空白应用程序

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

    因为使用此命令,没有定义自定义组件文件夹。因此Dapr 使用在 init 流中创建的默认组件定义(在 Windows中启用cmd用语句explorer "%USERPROFILE%.dapr"打开),告诉 Dapr 使用本地的 Redis Docker 容器作为状态存储和消息代理。

    接下来我们保存一个键值对到redis docker中,如下

    Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '[{ "key": "name", "value": "Bruce Wayne"}]' -Uri 'http://localhost:3500/v1.0/state/statestore'

    然后我们可以获取到我们保存的键值

    Invoke-RestMethod -Uri 'http://localhost:3500/v1.0/state/statestore/name'

    我们可以在redis中看到我们保存的键值对

    四、定义一个组件

    像是上述的执行的dapr内置api,是启用了我们的默认组件,这里我们自己构造组件进行运行,创建一个名为my-components的文件夹,在此目录内创建一个新文件localSecretStore.yaml和一个名为mysecrets.json的密钥文件,内容分别如下:

    apiVersion: dapr.io/v1alpha1
    kind: Component
    metadata:
      name: my-secret-store
      namespace: default
    spec:
      type: secretstores.local.file
      version: v1
      metadata:
      - name: secretsFile
        value: my-components/mysecrets.json
      - name: nestedSeparator
        value: ":"
    {
       "my-secret" : "I'm Batman"
    }

    您可以看到上述的文件定义有一个type: secretstores.local.file字段值,其告诉Dapr使用本地文件组件作为密钥存储。 元数据字段提供了使用该组件所需的组件特定信息(在本例中,是密钥存储JSON的路径)。

    我们将当前目录跳转到my-components文件夹的上一个目录,运行dapr sidecar,并以我们定义的组件为启动项:

    dapr run --app-id myapp --dapr-http-port 3500 --components-path ./my-components

    之后我们获取密钥可以看到如下情况获取成功:

    PS D:> Invoke-RestMethod -Uri 'http://localhost:3500/v1.0/secrets/my-secret-store/my-secret'
    
    my-secret
    ---------
    I'm Batman
  • 相关阅读:
    美的觉醒
    jquery中ajax使用error调试错误的方法
    VC项目开发之单文档多视图实现-非分割窗口[转]
    MFC常见问题解惑[转]
    计算机视觉、机器学习相关领域论文和源代码大集合[转]
    C++成员变量、构造函数的初始化顺序 [转]
    VC中常用的宏[转]
    (VC)解决绘图时闪烁问题的一点经验[转]
    C++的辅助工具介绍 [转]
    [GUI]界面开发类库-Ribbon风格 [转]
  • 原文地址:https://www.cnblogs.com/xwc1996/p/15036959.html
Copyright © 2011-2022 走看看