Dapr初体验之Hello World

  • A+
所属分类:.NET技术
摘要

Dapr – Distributed Application Runtime根据官方手册安装,由于安装镜像源使用了github导致下载失败。所以手动下载,复制到了服务器路径 /usr/local/bin 目录下。
解压缩压缩文件 tar xf dapr_linux_amd64.tar.gz
运行 dapr 检查安装状态


Dapr介绍

Dapr - Distributed Application Runtime

安装Dapr

根据官方手册安装,由于安装镜像源使用了github导致下载失败。所以手动下载,复制到了服务器路径 /usr/local/bin 目录下。
解压缩压缩文件 tar xf dapr_linux_amd64.tar.gz
运行 dapr 检查安装状态
Dapr初体验之Hello World

官方教程 Hello World

  1. Clone 官方quickstarts仓库
    git clone -b v1.5.0 https://github.com/dapr/quickstarts.git
    当然,如果服务器没有安装git需要先安装git yum install -y git,虽然也是从github克隆代码,一般情况下比较顺利。
    如果你的网络不给力,也可以从码云上克隆代码。
    git clone -b v1.5.0 https://gitee.com/balabiu/dapr-quickstarts.git
  2. 启动 Dapr
    必要条件,已经安装docker服务。
  • 运行命令 dapr init 初始化
  • 运行命令 dapr --version 检查版本
  1. 查看示例代码
  • 其中一个示例服务是使用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 接口,删除订单状态
  1. 使用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
  1. 测试服务
  • 使用POST方法请求接口 http://1.15.252.231:3000/neworder 新增订单,请求数据如下:
{     "data": {         "orderId": "42"     } } 

Dapr初体验之Hello World

  • 使用GET方法请求接口 http://1.15.252.231:3000/order,返回订单数据Id
  • 使用DELET方法请求接口 http://1.15.252.231:3000/order/42,删除数据42
  1. 使用Dapr运行Python应用
    这个应用会持续访问nodejs应用更新订单Id接口。
  • 进入 hello-world/python 目录下
  • 使用dapr启动python应用 dapr run --app-id pythonapp python3 app.py。当然,上面的nodejs应用必须保持运行。
  1. 停止dapr应用
  • 列表 dapr list
  • 停止nodejs应用 dapr stop --app-id nodeapp
  • 停止python应用 dapr stop --app-id pythonapp

总结

通过这次初体验,得到的知识点如下

  • Dapr默认初始化安装darp init,必须有docker环境。如果没有docker环境运行,dapr管这个叫自托管模式,这种模式下有很多限制,需要进一步学习。
  • 通过Dapr的服务调用,进行了一个状态写入和查询。
  • 使用dapr运行程序,是将程序注册到了dapr。--app-id指定应用名称,--dapr-http-port指定应用的端口后,有这这两个参数,为以后的服务调用做准备。(这个应该就是dapr的边车sidecar模式,不影响原来的程序,通过启动程序时候进行注册来来进行服务发现调用)