使用Dapr和Tye启动服务

一、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

2.验证安装
您可以通过重新启动您的终端/命令提示和运行以下操作来验证CLI:

dapr

输出显示应该如下方所示:
在这里插入图片描述

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配置,不能二者里面都配置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Dapr 是一个分布式应用程序运行时,它提供了一组构建微服务应用程序所需的基本功能。其中之一是 Actor,它是一种用于构建高度可伸缩和高可用性的分布式应用程序的编程模型。在 Java 中,您可以使用 Dapr Java SDK 来编写 Actor 应用程序。 以下是使用 Dapr Java SDK 编写 Actor 应用程序的步骤: 1. 添加 Dapr 依赖项 在 Maven 或 Gradle 项目中,您需要添加以下依赖项: Maven: ```xml <dependency> <groupId>io.dapr</groupId> <artifactId>dapr-sdk</artifactId> <version>0.30.0</version> </dependency> ``` Gradle: ```groovy implementation 'io.dapr:dapr-sdk:0.30.0' ``` 2. 创建 Actor 接口 创建一个 Java 接口,它将作为 Actor 的契约。例如: ```java public interface MyActor { CompletableFuture<String> sayHello(String name); } ``` 3. 实现 Actor 接口 创建一个实现 Actor 接口的 Java 类。例如: ```java public class MyActorImpl implements MyActor { @Override public CompletableFuture<String> sayHello(String name) { return CompletableFuture.completedFuture("Hello, " + name + "!"); } } ``` 4. 注册 Actor 在应用程序启动时,使用 Dapr Java SDK 将 Actor 注册到 Dapr 中。例如: ```java public class MyApp { private static final String APP_ID = "myapp"; private static final String ACTOR_TYPE = "myactor"; public static void main(String[] args) throws Exception { MyActorImpl actor = new MyActorImpl(); ActorRuntime.getInstance().registerActor(actor, ActorRegistration.newBuilder() .withActorType(ACTOR_TYPE) .withActorIdProvider(new RandomActorIdProvider()) .build()); // Wait for shutdown signal ActorRuntime.getInstance().waitForShutdown(); } } ``` 在上面的代码中,我们将 `MyActorImpl` 类注册为 Actor,并指定 Actor 的类型为 `myactor`。我们还指定了一个随机的 Actor ID 提供程序,以便在创建 Actor 时为其分配唯一的 ID。 5. 调用 Actor 使用 Dapr Java SDK 调用 Actor。例如: ```java public class MyAppClient { private static final String APP_ID = "myapp"; private static final String ACTOR_TYPE = "myactor"; private static final String ACTOR_ID = "actor1"; public static void main(String[] args) throws Exception { MyActor myActor = ActorBuilder .actorFor(MyActor.class, new URI("http://localhost:3500"), ACTOR_TYPE, ACTOR_ID) .build(); String result = myActor.sayHello("World").get(); System.out.println(result); } } ``` 在上面的代码中,我们使用 `ActorBuilder` 创建一个 `MyActor` 类型的 Actor,并指定 Actor 的类型为 `myactor`,Actor ID 为 `actor1`。然后我们调用 `sayHello` 方法,并等待返回结果。 这就是使用 Dapr Java SDK 编写 Actor 应用程序的基本步骤。在实际应用中,您可能需要使用更多的 Dapr 功能来管理 Actor 的生命周期、持久性、状态等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨中深巷的油纸伞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值