
Dapr 官方教程第三章(分布式计算器)
本快速入门通过分布式计算器展示了 Dapr 的方法调用和状态持久性功能,其中每个操作都由以不同语言/框架编写的不同服务提供支持:
——添加(+): Go mux应用程序
——乘法(*):Python Flask应用程序
——除法(/):Node Express应用
——减法(-):.NET Core应用程序
前端应用程序由一个服务器和一个用React编写的客户端组成。
以下架构图说明了构成本快速入门的组件:
先决条件
获取本教程资源
git clone https://github.com/dapr/quickstarts.git
cd quickstarts/distributed-calculator/
在本地运行
- Install Docker
- Install .Net Core SDK 3.1
- Install Dapr CLI
- Install Go
- Install Python3
- Install Npm
- Install Node
在 Kubernetes 环境中运行
支持 Dapr 的 Kubernetes 集群。按照这些说明进行设置。
在本地运行快速入门
初始化dapr
dapr init
这些指令在本地启动四个计算器运算符应用程序(加、减、乘和除)以及 dapr sidecar,然后运行前端应用程序,该应用程序将状态保存在本地 redis 状态存储中。
部署加法应用(go)
添加应用程序 - 打开终端窗口并导航到 go 目录并按照以下步骤操作:
cd go/
安装 gorilla/mux 包运行:
go get -u github.com/gorilla/mux
构建应用程序:
go build app.go
使用以下命令运行 dapr:
dapr run --app-id addapp --app-port 6000 --dapr-http-port 3503 ./app
部署减法应用(.netcore)
打开终端窗口并导航到 csharp 目录并按照以下步骤操作:
cd csharp/
设置环境变量以使用非默认应用程序端口7000
#Linux/Mac OS:
export ASPNETCORE_URLS="http://localhost:7000"
#Windows:
set ASPNETCORE_URLS=http://localhost:7000
构建应用程序:
dotnet build
导航到 ./bin/Debug/netcoreapp3.1
并使用以下命令启动 Dapr:
cd ./bin/Debug/netcoreapp3.1
dapr run --app-id subtractapp --app-port 7000 --dapr-http-port 3504 dotnet Subtract.dll
部署除法应用(.netcore)
先安装.netcore3.1
SDK,可以直接到该链接去下载
wget https://download.visualstudio.microsoft.com/download/pr/f9f54199-f0b3-43ac-badd-f9ef6867641c/50bd985f26c59f5d63f29f571f7f89e5/dotnet-sdk-3.1.412-linux-arm64.tar.gz
# 添加到环境变量中
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.1.412-linux-arm64.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
打开终端窗口并导航到节点目录并按照以下步骤操作:
cd quickstarts/distributed-calculator/node
通过运行以下命令安装依赖项:
npm install
使用以下命令启动 Dapr:
dapr run --app-id divideapp --app-port 4000 --dapr-http-port 3502 node app.js
部署乘法应用(python)
打开终端窗口并导航到 python 目录并按照以下步骤操作:
cd quickstarts/distributed-calculator/python/
安装所需的包
pip3 install wheel python-dotenv flask_cors flask
设置环境变量以使用非默认应用程序端口5000
#Linux/Mac OS:
export FLASK_RUN_PORT=5000
#Windows:
set FLASK_RUN_PORT=5000
使用以下命令启动 dapr:
dapr run --app-id multiplyapp --app-port 5000 --dapr-http-port 3501 flask run
部署前端应用(react)
打开终端窗口并导航到 react-calculator 目录并按照以下步骤操作:
cd quickstarts/distributed-calculator/react-calculator/
安装所需的模块
npm install
npm run buildclient
使用以下命令启动 Dapr
dapr run --app-id frontendapp --app-port 8080 --dapr-http-port 3500 node server.js
确保所有应用启动成功
cd quickstarts/distributed-calculator/
curl -s http://localhost:8080/calculate/add -H Content-Type:application/json --data @operands.json
curl -s http://localhost:8080/calculate/subtract -H Content-Type:application/json --data @operands.json
curl -s http://localhost:8080/calculate/divide -H Content-Type:application/json --data @operands.json
curl -s http://localhost:8080/calculate/multiply -H Content-Type:application/json --data @operands.json
curl -s http://localhost:8080/persist -H Content-Type:application/json --data @persist.json
curl -s http://localhost:8080/state
应该得到如下结果
访问
访问浏览器http://localhost:8080/
地址
点了一些计算后我们来看看它的链路zipkin
,也就是9411
端口
清理
dapr stop --app-id addapp
dapr stop --app-id subtractapp
dapr stop --app-id divideapp
dapr stop --app-id multiplyapp
dapr stop --app-id frontendapp
cd node
npm uninstall
在 Kubernetes 环境中运行快速入门
初始化dapr
dapr init -k
(可选)创建Redis,如果本地没有运行的Redis请按照如下步骤走
# 通过 docker 创建 redis
docker pull redis:latest
docker run -itd --name redis-test -p 6379:6379 redis
通过ifconfig
查看Ip地址:172.17.0.27
到部署目录中,修改redis.yaml
,添加上redis地址
cd deploy
vim redis.yaml
开始部署
kubectl apply -f .
我们可以通过如下两个命令观察部署情况
kubectl get pod -w
# 或
kubectl get pod,deploy.svc
接着我们设置服务的访问
kubectl port-forward service/calculator-front-end 8000:80
最后清理
kubectl delete -f .
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

