tnblog
首页
视频
资源
登录

Dapr 官方教程第三章(分布式计算器)

7070人阅读 2021/8/30 13:58 总访问:3467607 评论:0 收藏:0 手机
分类: 云产品

Dapr 官方教程第三章(分布式计算器)


本快速入门通过分布式计算器展示了 Dapr 的方法调用和状态持久性功能,其中每个操作都由以不同语言/框架编写的不同服务提供支持:
——添加(+): Go mux应用程序
——乘法(*):Python Flask应用程序
——除法(/):Node Express应用
——减法(-):.NET Core应用程序
前端应用程序由一个服务器和一个用React编写的客户端组成。
以下架构图说明了构成本快速入门的组件:

先决条件


获取本教程资源

  1. git clone https://github.com/dapr/quickstarts.git
  2. 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

  1. dapr init


这些指令在本地启动四个计算器运算符应用程序(加、减、乘和除)以及 dapr sidecar,然后运行前端应用程序,该应用程序将状态保存在本地 redis 状态存储中。

部署加法应用(go)


添加应用程序 - 打开终端窗口并导航到 go 目录并按照以下步骤操作:

  1. cd go/


安装 gorilla/mux 包运行:

  1. go get -u github.com/gorilla/mux


构建应用程序:

  1. go build app.go


使用以下命令运行 dapr:

  1. dapr run --app-id addapp --app-port 6000 --dapr-http-port 3503 ./app

部署减法应用(.netcore)


打开终端窗口并导航到 csharp 目录并按照以下步骤操作:

  1. cd csharp/


设置环境变量以使用非默认应用程序端口7000

  1. #Linux/Mac OS:
  2. export ASPNETCORE_URLS="http://localhost:7000"
  3. #Windows:
  4. set ASPNETCORE_URLS=http://localhost:7000


构建应用程序:

  1. dotnet build


导航到 ./bin/Debug/netcoreapp3.1 并使用以下命令启动 Dapr:

  1. cd ./bin/Debug/netcoreapp3.1
  2. dapr run --app-id subtractapp --app-port 7000 --dapr-http-port 3504 dotnet Subtract.dll

部署除法应用(.netcore)


先安装.netcore3.1SDK,可以直接到该链接去下载

  1. wget https://download.visualstudio.microsoft.com/download/pr/f9f54199-f0b3-43ac-badd-f9ef6867641c/50bd985f26c59f5d63f29f571f7f89e5/dotnet-sdk-3.1.412-linux-arm64.tar.gz
  2. # 添加到环境变量中
  3. mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.1.412-linux-arm64.tar.gz -C $HOME/dotnet
  4. export DOTNET_ROOT=$HOME/dotnet
  5. export PATH=$PATH:$HOME/dotnet


打开终端窗口并导航到节点目录并按照以下步骤操作:

  1. cd quickstarts/distributed-calculator/node


通过运行以下命令安装依赖项:

  1. npm install


使用以下命令启动 Dapr:

  1. dapr run --app-id divideapp --app-port 4000 --dapr-http-port 3502 node app.js

部署乘法应用(python)


打开终端窗口并导航到 python 目录并按照以下步骤操作:

  1. cd quickstarts/distributed-calculator/python/


安装所需的包

  1. pip3 install wheel python-dotenv flask_cors flask


设置环境变量以使用非默认应用程序端口5000

  1. #Linux/Mac OS:
  2. export FLASK_RUN_PORT=5000
  3. #Windows:
  4. set FLASK_RUN_PORT=5000


使用以下命令启动 dapr:

  1. dapr run --app-id multiplyapp --app-port 5000 --dapr-http-port 3501 flask run

部署前端应用(react)


打开终端窗口并导航到 react-calculator 目录并按照以下步骤操作:

  1. cd quickstarts/distributed-calculator/react-calculator/


安装所需的模块

  1. npm install
  2. npm run buildclient


使用以下命令启动 Dapr

  1. dapr run --app-id frontendapp --app-port 8080 --dapr-http-port 3500 node server.js

确保所有应用启动成功

  1. cd quickstarts/distributed-calculator/
  1. curl -s http://localhost:8080/calculate/add -H Content-Type:application/json --data @operands.json
  2. curl -s http://localhost:8080/calculate/subtract -H Content-Type:application/json --data @operands.json
  3. curl -s http://localhost:8080/calculate/divide -H Content-Type:application/json --data @operands.json
  4. curl -s http://localhost:8080/calculate/multiply -H Content-Type:application/json --data @operands.json
  5. curl -s http://localhost:8080/persist -H Content-Type:application/json --data @persist.json
  6. curl -s http://localhost:8080/state


应该得到如下结果

访问


访问浏览器http://localhost:8080/地址


点了一些计算后我们来看看它的链路zipkin,也就是9411端口

清理

  1. dapr stop --app-id addapp
  2. dapr stop --app-id subtractapp
  3. dapr stop --app-id divideapp
  4. dapr stop --app-id multiplyapp
  5. dapr stop --app-id frontendapp
  6. cd node
  7. npm uninstall

在 Kubernetes 环境中运行快速入门


初始化dapr

  1. dapr init -k


(可选)创建Redis,如果本地没有运行的Redis请按照如下步骤走

  1. # 通过 docker 创建 redis
  2. docker pull redis:latest
  3. docker run -itd --name redis-test -p 6379:6379 redis


通过ifconfig查看Ip地址:172.17.0.27


到部署目录中,修改redis.yaml,添加上redis地址

  1. cd deploy
  2. vim redis.yaml


开始部署

  1. kubectl apply -f .


我们可以通过如下两个命令观察部署情况

  1. kubectl get pod -w
  2. # 或
  3. kubectl get pod,deploy.svc


接着我们设置服务的访问

  1. kubectl port-forward service/calculator-front-end 8000:80


最后清理

  1. kubectl delete -f .

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Dapr 安装与介绍

Dapr 安装与介绍[TOC] Dapr 介绍Github: https://github.com/dapr/daprDapr是一种可移植的,事件驱动的,无服务器运行时...

Dapr 简单使用的内置API

Dapr 简单使用的内置API[TOC] 您的本地环境具有 Dapr sidecar 二进制文件以及状态管理和消息代理(均使用 Redis)的默认组...

Dapr 定义一个组件

Dapr 定义一个组件[TOC] 在上一步中,您调用了 Dapr HTTP API 来从 Redis 支持的状态存储中存储和检索状态。Dapr通过初始...

Dapr 官方教程第一章(Hello World)

Dapr 官方教程第一章(Hello World)[TOC] 本教程将演示如何在您的机器上本地运行 Dapr。您将部署一个 Node.js 应用程序,该...

Dapr 官方教程第二章(Hello World Kubernetes)

Dapr 官方教程第二章(Hello World Kubernetes)[TOC] 本教程将帮助您在 Kubernetes 集群中使用 Dapr。您将从Hello World部...

Dapr 官方教程第四章(发布订阅)

Dapr 官方教程第四章(发布订阅)[TOC] 在本快速入门中,您将创建一个发布者微服务和两个订阅者微服务,以演示 Dapr 如...

Dapr 官方教程第五章(Dapr 绑定kafka)

Dapr 官方教程第五章(Dapr 绑定kafka)[TOC] 在本快速入门中,您将创建两个微服务,一个具有输入绑定,另一个具有输出绑定...

Dapr .netcore与go的方法调用

Dapr .netcore与go的方法调用[TOC] 主要回顾一下dapr是如何调用方法的。这里是通过.netcore程序调用go程序中的方法。本章...

Dapr .NetCore 调用方法

Dapr .NetCore 调用方法[TOC] 创建客户端项目(InvokeMethod) 在Program类中设置日志控制台输出,在 launchSettings.jso...

Dapr .NetCore 状态管理

Dapr .NetCore 状态管理[TOC] 使用状态管理,您的应用程序可以将数据作为键/值对存储在支持的状态存储中。使用状态管理时...

Dapr .NetCore grpc调用

Dapr .NetCore grpc调用[TOC] 本文介绍如何使用 Dapr 连接使用 gRPC 的服务。通过使用 Dapr 的 gRPC 代理功能,您可以使用...

Dapr .NetCore 订阅与发布(上)

Dapr .NetCore 订阅与发布[TOC] 介绍Pub/Sub 是分布式系统中的一种常见模式,具有许多想要利用解耦异步消息传递的服务。使...

Dapr .NetCore 订阅与发布(下)

Dapr .NetCore 订阅与发布(下)[TOC] 解决关于运行是报错问题我们将为InvokeMethodServerAPI项目做一些修改。首先添加一些...

Dapr .NetCore Actor

Dapr .NetCore Actor[TOC] Actor简介简单来讲就是锁的作用,可以用作单线程调用实例,起到加锁的效果。解决了并发抢票的。...

Dapr .NetCore 绑定输入输出

Dapr .NetCore 绑定输入输出[TOC] 输入绑定简单来说通过你的应用所对应的dapr边车绑定队列的消息处理,但是这个消息中间件...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术