使用Dapr和Tye启动服务
自 2019 年开源以来,Dapr(Distributed Application runtime )已迅速成为非常流行的构建微服务的开源框架。它提供了分布式应用程序中常用的构建块和已打包的服务,例如服务调用、状态管理、消息队列、资源绑定和触发器、mTLS 安全连接和服务监控。分布式应用程序开发者可以在 runtime 利用和使用这些基于 Web 的 API,这些 API 是由构建块公开的。这些应用程序通常称为微服务并作为 sidecar 运行。Dapr 是多 runtime 微服务架构的一个例子,正如 InfoQ 作者 Bilgin Ibryam 所描述的那样。
Dapr 的 sidecar 模式非常像服务网格(Service Mesh)。然而,不同于传统服务网格意在无需任何代码更改即可管理应用程序,Dapr 应用程序需要集成并积极利用外部 Dapr 构建块服务。
Dapr Sidecar 中的微服务应用程序可以是用 Go 和 Rust 等语言编译的本地客户端 (NaCl) 应用程序,也可以是用 Python 或 JavaScript 编写的托管语言应用程序。换句话说,sidecar 应用程序可以有自己的语言 runtime。Sidecar 模型允许 Dapr 为其应用程序支持“在任何地方任何语言、任何框架、任何地方”。
一、Dapr环境配置
1.下载并安装 Dapr CLI
使用命令
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash
或者您可以通过 Homebrew 进行安装
brew install dapr/tap/dapr-cli
也可以离线安装:Dapr 离线安装 & 在线执行 dapr init error
2.验证安装
您可以通过重新启动您的终端/命令提示和运行以下操作来验证CLI:
dapr
输出显示应该如下方所示:
CLI version: 1.8.0
Runtime version: 1.8.0
3.初始化dapr
Dapr 与您的应用程序一起作为sidecar运行,在自托管模式下,这意味着它是您本地机器上的一个进程。因此,初始化 Dapr 包括获取 Dapr sidecar 二进制文件并将其安装到本地.
此外,默认初始化过程还创建了一个开发环境,帮助简化 Dapr 的应用开发。这包括下列步骤:
运行一个用于状态存储和消息代理的Redis容器实例
运行一个用于提供可观察性的Zipkin容器实例
创建具有上述组件定义的 默认组件文件夹
运行用于本地actor支持的Dapr placement服务容器实例
这种推荐的开发环境需要 Docker.
启动Docker
运行init CLI 命令:
dapr init
(如果提示timeout,多重拾几次,如果本地服务中存在redis,退出redis重试)
验证Dapr 版本:
dapr --version
(输出应该看起来像这样:
CLI version: 1.2.0
Runtime version: 1.2.0)
验证容器正在运行:
docker ps
验证组件目录已初始化:在 dapr init时,CLI 还创建了一个默认组件文件夹,其中包括几个 YAML 文件,其中包含state store、elevated 和 zipkin。Dapr sidecar, 将读取这些文件。告诉它使用Redis容器进行状态管理和消息传递,以及Zipkin容器来收集跟踪:
ls $HOME/.dapr
您应该看到:
bin components config.yaml
dapr订阅模式通信 pubsub.yaml配置示例
Rabbitmq 通信
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: pubsub
namespace: dapr-trafficcontrol
spec:
type: pubsub.rabbitmq
version: v1
metadata:
- name: host
value: "amqp://localhost:5672"
- name: durable
value: "false"
- name: deletedWhenUnused
value: "false"
- name: autoAck
value: "false"
- name: reconnectWait
value: "0"
- name: concurrency
value: parallel
scopes:
- test1service
- test2service
redis通信,将配置文件中对应rabbitmq的部分替换为redis
spec:
type: pubsub.redis
version: v1
metadata:
- name: redisHost
value: localhost:6379
- name: redisPassword
value: ""
二、Tye安装
使用命令:
dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
或者,如果您已经安装了 Tye 并想要更新:
dotnet tool update -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
三、启动项目
1.使用dapr
打开一个终端,进入到项目文件夹下,执行命令
dapr run
--app-id testservice
--app-port 6001
--dapr-http-port 3601
--dapr-grpc-port 60001
--config ../dapr/config/config.yaml
--config ../dapr/config/config.yaml
–app-port :项目监听端口号。
–dapr-http-port:dapr指定端口号,可不加,dapr会随机指定。
–dapr-grpc-port:grpc端口号,可不加,dapr会随机指定。
–config:config文件,可不加,不加会使用默认的。
–components-path:dapr配置文件路径(相对路径),可不加,不加会使用默认的。
项目启动后运行
dapr dashboard
可以查看dapr面板,默认是localhost:8080,查看项目的运行状态,配置信息等。
也可以指定面板端口号:
dapr dashboard --port 6687
2.使用tye
打开终端,进入到解决方案文件夹下,运行命令:
tye init
会生成一个tye.yaml配置文件。
执行命令启动服务
tye run
可以打开tye面板,默认是localhost:8080,查看项目的运行状态。
更多tye使用样例以及配置
https://github.com/dotnet/tye
配置时注意空格以及格式对齐。
配置示例
name: myapplication
extensions:
#配置使用dapr
- name: dapr
#配置使用dapr config,不配置时使用默认配置
config: "./dapr/config/config.yaml"
#配置使用dapr 配置文件,不配置 时使用默认dapr 配置
components-path: "./dapr/components/"
services:
- name: backend
project: backend/backend.csproj
bindings:
- port: 7000
- name: frontend
project: frontend/frontend.csproj
replicas: 2
bindings:
- port: 8000
- name: worker
project: worker/worker.csproj
- name: rabbit
image: rabbitmq:3-management
bindings:
- port: 5672
protocol: rabbitmq
- name: redis
image: redis
bindings:
- port: 6973
注意:Dapr和tye配置redis、rabbitmq等服务时,只可以单独选dapr配置或者选tye配置,不能二者里面都配置。
鸣谢:
https://mp.weixin.qq.com/s/3jCZOsGCmJNKxaTaefwc1w
https://blog.csdn.net/qq_25086397/article/details/126287835
使用Dapr和Tye启动服务的更多相关文章
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护
dapr目前更新到了1.2版本,在之前4月份的时候来自阿里的开发工程师发起了一个dapr集成Alibaba Sentinel的提案,很快被社区加入到了1.2的里程碑中并且在1.2 release 相关 ...
- git克隆项目到本地&&全局安装依赖项目&&安装依赖包&&启动服务
一.安装本地开发环境 1.安装本项目 在需要保存到本地的项目的文件夹,进入到文件夹里点击右键,bash here,出现下图: 2.安装依赖项目 3.安装依赖包(进入到命令行) # 安装依赖包 $ ...
- MySQL 启动服务报错解决方案
标签:ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid) 概述 文章 ...
- ubuntu下设置开机启动服务
原文:http://blog.csdn.net/dante_k7/article/details/7213151 在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本 ...
- C#操作注册服务卸载服务启动服务停止服务.. .
using Microsoft.Win32; using System; using System.Collections; using System.Collections.Generic; usi ...
- 如何添加Tomcat为启动服务
tomcat8.0, 可以用startup.bat启动, 但注销又不能启动服务,但现在的系统不知出了什么问题 ? 答 1.我这个是zip版本的,所以里面有一个service.bat的文件,所以很简单 ...
- 【转】Win8下安装SQL Server 2005无法启动服务
安装了Windows8,但是发现不支持Sql Server 2005的安装.网上找了很多办法,基本上都有缺陷.现在终于找到一种完全正常没有缺陷的办法了,和大家分享一下. 1.正常安装任一版本的SQL ...
- centos 开机启动服务
一.启动脚本 /etc/rc.local 启动 最简单的一种方式,在启动脚本 /etc/rc.local (其实 /etc/rc.local 是/etc/rc.d/rc.local 的软链接文件,实际 ...
- MongoDB安装启动服务
这里主要是针对解决出现的问题. 1.MongoDB 下载地址http://www.mongodb.org/downloads 下载之后可以自定义安装路径,我安装在了D盘下. 然后在环境变量中添加: M ...
- MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”
MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...
随机推荐
- OL3-Cesium 二三维鼠标事件统一处理
like the github issue: https://github.com/openlayers/ol3-cesium/issues/344#issuecomment-214098148 th ...
- rtsp协议转换m3u8
目前项目中使用海康的摄像头,但需要提供实时预览.目前通过转换协议实现预览.同时能够尽量减少服务器的压力,比如生成的ts文件个数. 思路 通过ffmpeg 将rtsp协议转换成hls协议 具体步骤 1. ...
- 学习笔记-Java流程控制
学习来源: [狂神说Java]Java零基础学习视频通俗易懂_哔哩哔哩_bilibili Java流程控制 用户交互Scanner 获取用户的输入 基本语法 Scanner s = new Scann ...
- net Core做一个webApi的简单实例
用NetCore 和Dapper 和mySql做一个简单的实例, 一准备工作 1:VS2017+windos系统,也可以用其他的操作系统和工具 2:一台Cenetos的虚拟机或者虚拟机 二:开始 1: ...
- 【驱动 】frambuffer中显示屏参数的修改
1.在x210板子的kernel中,默认LCD显示屏是800*400的,修改在 kernel/arch/arm/mach-s5pv210/mach-x210.c 中 258行 #define S5PV ...
- idea gradle 安装失败
文件下载地址 gradle-> wrapper- > gradle-wrapper.properties 默认安装位置 ~/. gradle 当前项目 ~/. gradle 下载地址 wg ...
- Treetop Lights使用条款与免责协议
Treetop Lights (以下简称"我们")在此特别提醒您务必认真阅读.充分理解本<使用条款与免责协议>(以下简称"本协议")中各条款并选择是 ...
- 异步串口通信协议--UART
UART(通用异步收发传输器)将由计算机内部传送过来的并行数据转换为输出的串行数据流.将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用. 在输出的串行数据流中加入奇偶校验位,并对 ...
- django项目初创建报错TypeError: unsupported operand type(s) for /: 'str' and 'str'
解决办法: 'DIRS': [os.path.join(BASE_DIR, 'templates')],
- kali 更新到最新版(测试中...)
# 确认源 (下面用阿里云的源举例) echo "deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib ...