Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。Dapr 确保开发人员专注于编写业务逻辑,不必分神解决分布式系统难题,从而显著提高了生产力。Dapr 降低了构建微服务架构类现代云原生应用的门槛。
系列
安装 Dapr CLI
MacOS & Dapr 1.8:
sudo curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash
Linux/Windows 安装方式:
本地环境中初始化 Dapr
Dapr 初始化包括:
- 运行一个用于状态存储和消息代理的 Redis 容器实例
- 运行一个用于提供可观察性的 Zipkin 容器实例
- 创建具有上述组件定义的 默认组件文件夹
- 运行用于本地 actor(我们的服务) 支持的 Dapr placement 服务容器实例
运行初始化 CLI 命令
dapr init 复制代码
验证 Dapr 版本
dapr -v
CLI version: 1.8.0
Runtime version: 1.8.0
验证容器是否正在运行
如前所述, dapr init
命令会启动几个容器,这些容器将帮助您开始使用 Dapr
。 验证您有运行 daprio/dapr
、 openzipkin/zipkin
和 redis
映像的容器实例:
验证组件目录是否已初始化
在 dapr init
上, CLI
还会创建一个默认组件文件夹,其中包含几个 YAML
文件,其中包含状态存储、 Pub/sub
和 Zipkin
的定义。 Dapr sidecar
将读取这些组件并使用:
- 用于状态管理和消息传递的 Redis 容器。
- 用于收集踪迹的 Zipkin 容器。
通过打开您的组件目录进行验证:
%UserProfile%\.dapr
~/.dapr
ls $HOME/.dapr
bin components config.yaml
使用 Dapr API
运行 Dapr sidecar 并试用 state API
运行 Dapr sidecar
dapr run
命令启动一个应用程序,以及一个 sidecar。
启动一个 Dapr sidecar,它将在端口 3500 上侦听名为 myapp
的空白应用程序:
dapr run --app-id myapp --dapr-http-port 3500
由于没有使用上述命令定义自定义组件文件夹,因此 Dapr 使用在 dapr init
流程期间创建的默认组件定义。
保存状态
使用对象更新状态。新状态将如下所示:
[
{
"key": "name",
"value": "Bruce Wayne"
}
]
请注意,包含在状态中的每个对象都有一个分配有值为 name
的 key
。您将在下一步中使用该 key
。
使用以下命令保存新的状态对象:
curl -X POST -H "Content-Type: application/json" -d '[{ "key": "name", "value": "Bruce Wayne"}]' http://localhost:3500/v1.0/state/statestore
获取状态
使用带有 key 为 name
的状态检索您刚刚存储在 state 中的对象。在同一终端窗口中,运行以下命令:
curl http://localhost:3500/v1.0/state/statestore/name
查看状态如何存储在 Redis 中
docker exec -it dapr_redis redis-cli
列出 Redis 键以查看 Dapr 如何使用您提供给 dapr run 的 app-id 作为 key
的前缀创建键值对:
keys *
"myapp||name"
运行以下命令查看状态值:
hgetall "myapp||name"
1) "data"
2) "\"Bruce Wayne\""
3) "version"
4) "1"
使用以下命令退出 Redis CLI:
exit
删除状态
在同一终端窗口中,从状态存储中删除 name