Dapr 官方教程第一章(Hello World) 电脑版发表于:2021/8/27 15:24  >#Dapr 官方教程第一章(Hello World) [TOC] tn2>本教程将演示如何在您的机器上本地运行 Dapr。您将部署一个 **Node.js** 应用程序,该应用程序订阅消息并将其持久化。 (简单来说就是做一些状态管理大致如下)  tn2>在这之后,将部署一个Python应用程序充当发布者,去调用并修改Node应用的状态值。  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`代码。     使用 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 ```  tn>`--app-port`应用程序运行的端口(这里的Node应用是3000端口)。关于代码中`StateStoreName`的名字的定义为什么是`statestore`呢?那是因为存储状态定义的名称叫`statestore`,定义的路径在`~/.dapr` ```bash const stateStoreName = `statestore`; const stateUrl = `http://localhost:${daprPort}/v1.0/state/${stateStoreName}`; ```  向服务发布消息 ------------ 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 ```  tn2>我们可以通过Zipkin看得很清楚。  确认成功持久化 ------------ tn2>我们来看看是否将状态保存到了Redis中去了。也就是访问我们刚刚定义的`order`方法 ```bash dapr invoke --app-id nodeapp --method order --verb GET # 或者 curl http://localhost:3500/v1.0/invoke/nodeapp/method/order ```  tn>到此为止,我们完成了第一幅图的案例制作。 使用 Dapr 运行 Python 应用程序 ------------ tn2>也就是我们的`app.py`  tn>我们可以看到该程序就是每隔一秒去修改orderId的数据。 tn2>我们开始运行这个应用程序。 ```bash # 安装依赖 pip3 install requests # 使用 Dapr 启动 Python 应用程序 dapr run --app-id pythonapp python3 app.py ```  tn2>我们再来看看以前的node程序,我们会发现它在不断的修改  清理 ------------ ```bash dapr stop --app-id nodeapp dapr stop --app-id pythonapp ``` 