Dapr 官方教程第一章(Hello World) 电脑版发表于:2021/8/27 15:24 ![](https://img.tnblog.net/arcimg/hb/896fd38e95b346f9a0d98c54b135bb94.jpg) >#Dapr 官方教程第一章(Hello World) [TOC] tn2>本教程将演示如何在您的机器上本地运行 Dapr。您将部署一个 **Node.js** 应用程序,该应用程序订阅消息并将其持久化。 (简单来说就是做一些状态管理大致如下) ![](https://img.tnblog.net/arcimg/hb/75c3d74398654adb894c755776d6a8e2.png) tn2>在这之后,将部署一个Python应用程序充当发布者,去调用并修改Node应用的状态值。 ![](https://img.tnblog.net/arcimg/hb/7b02683bef824d20987d7225ec54efb0.png) tn2>默认都是使用的Redis。 先决条件 ------------ tn2>本快速入门要求您在计算机上安装以下内容: ————Docker ————Node.js version 8 or greater ————Python 3.x 注意:在 Windows 上运行此快速入门时,最好从 python.org 而不是从 Windows 商店安装 Python。 ————Postman [可选] 安装好Dapr ------------ ```bash wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash dapr init ``` 理解代码 ------------ tn2>下载代码到本地: ```bash git clone https://github.com/dapr/quickstarts.git cd quickstarts/hello-world ``` tn2>执行`cat app.js`查看`app.js`代码。 ![](https://img.tnblog.net/arcimg/hb/aa1a75a1c3594325b43e8e6acca58f1b.png) ![](https://img.tnblog.net/arcimg/hb/6a4b326a50da458aac11917d0251c90a.png) ![](https://img.tnblog.net/arcimg/hb/cadcabb7bb194a738668f4ea0675c2df.png) ![](https://img.tnblog.net/arcimg/hb/14697e55db4c4655a6c1ba7934002412.png) 使用 Dapr 运行 Node.js 应用程序 ------------ tn2>安装依赖包 ```bash npm install ``` tn2>这将安装`express`和`body-parser`中显示的依赖项`package.json`。 使用 Dapr 运行 Node.js 应用程序 ```bash dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 node app.js ``` ![](https://img.tnblog.net/arcimg/hb/009f6593fce345499a5ec77b648ab873.png) tn>`--app-port`应用程序运行的端口(这里的Node应用是3000端口)。关于代码中`StateStoreName`的名字的定义为什么是`statestore`呢?那是因为存储状态定义的名称叫`statestore`,定义的路径在`~/.dapr` ```bash const stateStoreName = `statestore`; const stateUrl = `http://localhost:${daprPort}/v1.0/state/${stateStoreName}`; ``` ![](https://img.tnblog.net/arcimg/hb/b148040ae8ce48b5abd992a1aff0bbaf.png) 向服务发布消息 ------------ tn2>接着我们向node的sidecar,通过访问`neworder`方法(添加/修改)orderId数据 ```bash dapr invoke --app-id nodeapp --method neworder --data '{"data": { "orderId": "42" } }' # 或者请求链接也可以 curl -XPOST -d @sample.json -H "Content-Type:application/json" http://localhost:3500/v1.0/invoke/nodeapp/method/neworder ``` ![](https://img.tnblog.net/arcimg/hb/16573a4d2936437ab16e239be339a693.png) tn2>我们可以通过Zipkin看得很清楚。 ![](https://img.tnblog.net/arcimg/hb/47842f79d7804b7fafcc08d83b4f416e.png) 确认成功持久化 ------------ tn2>我们来看看是否将状态保存到了Redis中去了。也就是访问我们刚刚定义的`order`方法 ```bash dapr invoke --app-id nodeapp --method order --verb GET # 或者 curl http://localhost:3500/v1.0/invoke/nodeapp/method/order ``` ![](https://img.tnblog.net/arcimg/hb/f0135e7037b942dea56103d454b92a00.png) tn>到此为止,我们完成了第一幅图的案例制作。 使用 Dapr 运行 Python 应用程序 ------------ tn2>也就是我们的`app.py` ![](https://img.tnblog.net/arcimg/hb/da956ca513e74d40acd959b638f8b596.png) tn>我们可以看到该程序就是每隔一秒去修改orderId的数据。 tn2>我们开始运行这个应用程序。 ```bash # 安装依赖 pip3 install requests # 使用 Dapr 启动 Python 应用程序 dapr run --app-id pythonapp python3 app.py ``` ![](https://img.tnblog.net/arcimg/hb/3ee31a3d6f744ecea037ec8615b613df.png) tn2>我们再来看看以前的node程序,我们会发现它在不断的修改 ![](https://img.tnblog.net/arcimg/hb/735653a16e174dc59319409528ae9439.png) 清理 ------------ ```bash dapr stop --app-id nodeapp dapr stop --app-id pythonapp ``` ![](https://img.tnblog.net/arcimg/hb/4e3d93adba944a63bed489cd8cb69f36.png)