Dapr初体验之Hello World
Dapr介绍
Dapr - Distributed Application Runtime
安装Dapr
根据官方手册安装,由于安装镜像源使用了github导致下载失败。所以手动下载,复制到了服务器路径 /usr/local/bin
目录下。
解压缩压缩文件 tar xf dapr_linux_amd64.tar.gz
运行 dapr
检查安装状态
官方教程 Hello World
- Clone 官方quickstarts仓库
git clone -b v1.5.0 https://github.com/dapr/quickstarts.git
当然,如果服务器没有安装git需要先安装gityum install -y git
,虽然也是从github克隆代码,一般情况下比较顺利。
如果你的网络不给力,也可以从码云上克隆代码。
git clone -b v1.5.0 https://gitee.com/balabiu/dapr-quickstarts.git
- 启动 Dapr
必要条件,已经安装docker服务。
- 运行命令
dapr init
初始化 - 运行命令
dapr --version
检查版本
- 查看示例代码
- 其中一个示例服务是使用node.js开发的,首先你需要检查你是否有node.js运行时。如果你没有安装nodejs,使用包管理器安装
dnf module install nodejs:16
,使用node -v
检查安装状态。
现在,你可以进入到文件夹 quickstarts/hello-world/node 查看 app.js 阅读以下程序逻辑。
虽然没有写过nodejs代码,但示例代码是很简单的,通过简单阅读基本逻辑是启动一个http服务端,监听几个接口的端节点。
很简单的三个接口,访问node启动的服务接口,操作dapr。
接口 | 方法 | 逻辑 |
---|---|---|
/order | GET | 请求 http://localhost:3500/v1.0/state/statestore/order 接口,返回订单状态 |
/neworder | POST | 请求 http://localhost:3500/v1.0/state/statestore/order 接口,新增订单状态 |
/order/:id | DELETE | 请求 http://localhost:3500/v1.0/state/statestore/order 接口,删除订单状态 |
- 使用Dapr运行nodejs应用
- 进入 quickstarts/hello-world/node 目录
- 运行
npm install
还原包 - 运行
dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 node app.js
启动nodejs app
- 测试服务
- 使用POST方法请求接口
http://1.15.252.231:3000/neworder
新增订单,请求数据如下:
{
"data": {
"orderId": "42"
}
}
- 使用GET方法请求接口
http://1.15.252.231:3000/order
,返回订单数据Id - 使用DELET方法请求接口
http://1.15.252.231:3000/order/42
,删除数据42
- 使用Dapr运行Python应用
这个应用会持续访问nodejs应用更新订单Id接口。
- 进入 hello-world/python 目录下
- 使用dapr启动python应用
dapr run --app-id pythonapp python3 app.py
。当然,上面的nodejs应用必须保持运行。
- 停止dapr应用
- 列表
dapr list
- 停止nodejs应用
dapr stop --app-id nodeapp
- 停止python应用
dapr stop --app-id pythonapp
总结
通过这次初体验,得到的知识点如下
- Dapr默认初始化安装
darp init
,必须有docker环境。 - 通过Dapr的服务调用,进行了一个状态写入和查询。
- 使用dapr运行程序,是将程序注册到了dapr。
--app-id
指定应用名称,--dapr-http-port
指定应用的端口后,有这这两个参数,为以后的服务调用做准备。(这个应该就是dapr的边车sidecar模式,不影响原来的程序,通过启动程序时候进行注册来来进行服务发现调用)