自 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启动服务的更多相关文章

  1. 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护

    dapr目前更新到了1.2版本,在之前4月份的时候来自阿里的开发工程师发起了一个dapr集成Alibaba Sentinel的提案,很快被社区加入到了1.2的里程碑中并且在1.2 release 相关 ...

  2. git克隆项目到本地&&全局安装依赖项目&&安装依赖包&&启动服务

     一.安装本地开发环境 1.安装本项目 在需要保存到本地的项目的文件夹,进入到文件夹里点击右键,bash here,出现下图: 2.安装依赖项目  3.安装依赖包(进入到命令行) # 安装依赖包 $ ...

  3. MySQL 启动服务报错解决方案

    标签:ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid) 概述 文章 ...

  4. ubuntu下设置开机启动服务

    原文:http://blog.csdn.net/dante_k7/article/details/7213151 在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本 ...

  5. C#操作注册服务卸载服务启动服务停止服务.. .

    using Microsoft.Win32; using System; using System.Collections; using System.Collections.Generic; usi ...

  6. 如何添加Tomcat为启动服务

    tomcat8.0, 可以用startup.bat启动, 但注销又不能启动服务,但现在的系统不知出了什么问题 ? 答 1.我这个是zip版本的,所以里面有一个service.bat的文件,所以很简单 ...

  7. 【转】Win8下安装SQL Server 2005无法启动服务

    安装了Windows8,但是发现不支持Sql Server 2005的安装.网上找了很多办法,基本上都有缺陷.现在终于找到一种完全正常没有缺陷的办法了,和大家分享一下. 1.正常安装任一版本的SQL ...

  8. centos 开机启动服务

    一.启动脚本 /etc/rc.local 启动 最简单的一种方式,在启动脚本 /etc/rc.local (其实 /etc/rc.local 是/etc/rc.d/rc.local 的软链接文件,实际 ...

  9. MongoDB安装启动服务

    这里主要是针对解决出现的问题. 1.MongoDB 下载地址http://www.mongodb.org/downloads 下载之后可以自定义安装路径,我安装在了D盘下. 然后在环境变量中添加: M ...

  10. MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

    MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...

随机推荐

  1. tesseract-ocr 安装、语言库、使用 随记

    前几日才听说ocr的图片识别功能.觉得很有意思.先体验一下. 地址: GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engin ...

  2. 使用tkinter开发的一款登录和注册图形化界面

    目录 项目介绍 登录功能 登录界面展示 登录主要功能 登录部分源码 注册功能 注册界面展示 注册主要功能 注册部分源码 源码地址 项目介绍 使用tkinter开发的一款登录和注册图形化界面 使用tki ...

  3. IE和FireFox 对FORM enctype属性的认识存在差异

    IE和FireFox 对FORM enctype属性的认识存在差异,一般来说对于动态创建的form,如果因为要上传文件的原因很自然的会使用类似如下的代码: 1  //create form 2  th ...

  4. Neural Network模型复杂度之Weight Decay - Python实现

    背景介绍Neural Network之模型复杂度主要取决于优化参数个数与参数变化范围. 优化参数个数可手动调节, 参数变化范围可通过正则化技术加以限制. 正则化技术之含义是: 引入额外的条件, 对fu ...

  5. 关于webpack 开启代理proxy后,接口看不到代理地址的问题。

    今天在项目中发现, 明明在proxy里代理了 接口地址确不是10.10.11.106/front/xxxxxx.这是为啥呢?changeOrigin的修改也是一样,在网络请求中发现host还是没改.这 ...

  6. webpack和source map

    当 webpack 打包源代码时,可能会很难追踪到 error(错误) 和 warning(警告) 在源代码中的原始位置. 如果打包后代码有一处错误,特别是使用的vue.react这些前端框架.打包后 ...

  7. Centos SSH 免密操作

    1. 在本机生成公钥+私钥      ssh-keygen -t rsa 2. 发送密钥到目标服务器      ssh-copy-id root@192.168.137.111 3.尝试登录目标服务器 ...

  8. go 使用mysql

    package main /* 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行, 然而,有些时候我们并不需要把整个包都导入进来, ...

  9. ROS-安装与开发速记

    参考教程: B站视频(感谢赵老师):https://www.bilibili.com/video/BV1Ci4y1L7ZZ?p=14&spm_id_from=pageDriver 课程文件:h ...

  10. 网线接口调试,Android ADB网络调试!

    ADB网络调试,网线接口调试    没有USB接口,照样可以调试,可通过网线接口调试步骤! 一.第一步连接WIFI  查看wifi 的IP  win+R 键 打开运行 ,输入cmd   二.输入ipc ...