Dapr学习

Dapr安装

Dapr是一个可移植的、无服务器的、事件驱动的运行时,它使开发人员能够轻松地构建在云和edge上运行的具有弹性、无状态和有状态的微服务,并支持多种语言和开发人员框架

类似一个将与业务无关的基础功能整合到sider-car(dapr)中。

官方文档:https://docs.dapr.io/

quickstarts: 快速入门

安装Dapr Cli

官方github仓库的Release页面下载对应系统的压缩包

https://github.com/dapr/cli/releases

解压之后将dapr文件转移到对应目录

Linux,Mac用户:

mv ./dapr /usr/local/bin
# 如果是Mac M1的用户如果不能执行需要执行如下命令
softwareupdate --install-rosetta

Windows用户:创建一个目录并将其添加到系统PATH。 例如,通过编辑系统环境变量,创建一个名为 C:\dapr 的目录,并将此目录添加到您的用户PATH

验证只需要直接执行 dapr 命令出现正常提示即可。

初始化Dapr

Dapr 与您的应用程序一起作为sidecar运行,在自托管模式下,这意味着它是您本地机器上的一个进程。 因此,初始化 Dapr 包括获取 Dapr sidecar 二进制文件并将其安装到本地.

推荐开发环境使用Docker

如果你使用 sudo 运行您的 Docker 命令,或者安装路径是 /usr/local/bin (默认安装路径), 您需要在下面使用 sudo

  • 安装最新的 Dapr 运行时二进制程序:
sudo dapr init
  • 验证Dapr 版本
sudo dapr --version
# 输出内容如下
CLI version: 1.0.1 
Runtime version: 1.1.0
  • 验证容器正在运行
docker ps
# 会看到 daprio/dapr, openzipkin/zipkin和 redis 几个镜像的容器正在运行
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS                              NAMES
0dda6684dc2e   openzipkin/zipkin        "/busybox/sh run.sh"     2 minutes ago   Up 2 minutes   9410/tcp, 0.0.0.0:9411->9411/tcp   dapr_zipkin
9bf6ef339f50   redis                    "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   0.0.0.0:6379->6379/tcp             dapr_redis
8d993e514150   daprio/dapr              "./placement"            2 minutes ago   Up 2 minutes   0.0.0.0:6050->50005/tcp            dapr_placement    
  • 验证组件目录已初始化

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

ls ~/.dapr
# 内容如下
bin  components  config.yaml

Dapr-Component

自定义组件

Dapr自定义密钥组件

  • 创建一个 JSON 密钥存储

Dapr 支持 许多类型的密钥存储, 但最简单的方法是在本地的JSON文件中加入您的密钥(注意这个秘密存储是为了开发的目的,不推荐生产使用,因为它不安全)。

首先保存下面的 JSON 内容到名为 my-components/mysecrets.json 的文件:

{
   "my-secret" : "yasewang"
}
  • 创建一个密钥存储Dapr 组件配置文件: localSecretStore.yaml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: my-secret-store
  namespace: default
spec:
  type: secretstores.local.file
  version: v1
  metadata:
  - name: secretsFile
    value: /Users/hzgod/Documents/hz/daprtest/my-components/mysecrets.json
  - name: nestedSeparator
    value: ":"

可以看到上面的文件定义有一个 type: secretstores.local.file 告诉Dapr使用本地文件组件作为密钥存储。

  • 运行Dapr sidecar
dapr run --app-id myapp --dapr-http-port 3500 --components-path ./my-components
  • 获取密钥
curl http://localhost:3500/v1.0/secrets/my-secret-store/my-secret
# 内容如下
{"my-secret":"yasewang"}

Dapr-State

Dapr-State简单使用示例

  • 运行 Dapr Sidecar
# 在端口 3500 上监听名为 myapp 的空白应用程序
dapr run --app-id myapp --dapr-http-port 3500
  • 保存状态
curl -X POST -H "Content-Type: application/json" -d '[{ "key": "name", "value": "Yasewang"}]' http://localhost:3500/v1.0/state/statestore
  • 获取状态
curl http://localhost:3500/v1.0/state/statestore/name
  • 查看状态如何在 Redis 中存储
docker exec -it dapr_redis redis-cli
# 查看所有key
keys *
# 结果如下:
1) "myapp||name"
# 查看内容
hgetall "myapp||name"
# 结果如下:
1) "data"
2) "\"Yasewang\""
3) "version"
4) "1"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值