Dapr在Java中的实践 之 环境准备

Dapr简介

Dapr (Distributed Application Runtime)是一个可移植的、事件驱动的运行时,它使任何开发人员都可以轻松地构建运行在云和边缘上的弹性、无状态和有状态的应用程序,并支持语言和开发人员框架的多样性。Dapr利用Sidecar架构的优势,帮助我们解决构建微服务所带来的挑战,并保持代码与平台无关。

overview.png

从上面的架构图看出,Dapr包括如下几个模块:

  • 服务调用(Service-to-service Invocation):通过服务调用,服务可以使用 gRPC 或 HTTP 这样的标准协议来发现并可靠地与其他服务通信。
  • 状态管理(State Management):独立的状态管理,使用键值对作为存储机制,可以轻松的使长时运行、高可用的有状态服务和无状态服务共同运行在我们的服务中。
  • 发布订阅(Publish and Subscribe):发布事件和订阅主题。生产者将消息发送到某个主题(Topic),但不知道接收消息的服务;消费者将订阅该主题并收到它的消息,但不知道哪个服务生产了这些消息。
  • 资源绑定(Resource Bindings):通过建立触发器与资源的绑定,可以从任何外部源(例如数据库,队列,文件系统等)接收和发送事件,而无需借助消息队列,即可实现灵活的业务场景。
  • Actors:Actor是一个独立的运行单元,拥有隔离的运行空间,在隔离的空间内,其有独立的状态和行为,不被外界干预。Actor之间通过消息进行交互,而同一时刻,每个Actor只能被单个线程执行,这样既有效避免了数据共享和并发问题,又确保了应用的伸缩性。
  • 可观测性(Observability):记录指标(metric)、日志(log)、链路(trace)以调试和监视Dapr和服务的运行状况。
  • 密钥管理(Secrets):支持与公有云和本地的密钥存储集成,以供服务检索使用。
  • 配置管理(Configuration):通过配置API在配置存储中检索和订阅服务的配置项。

安装 Docker

这里以Windows 10系统为例,安装 Docker。

安装 Hyper-V

Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化。Hyper-V 可用于 64 位 Windows 10 专业版、企业版和教育版。 它无法用于家庭版。

点击“小窗户”,然后再点击“设置”,如下图:

设置

在搜索框中输入“启用或关闭Windows功能”,如下图:

启用或关闭Windows功能

点击“启用或关闭Windows功能”后,勾选“Hyper-V”所有选项,如下图:

Hyper-V

点击“确定”,等一会儿就安装好了。(可能需要重启电脑)

安装 Docker Desktop

访问https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe下载,双击Docker Desktop Installer.exe运行安装程序。按照安装向导上的说明授权安装程序并继续进行安装。

安装完成后,启动Docker Desktop,等一会儿初始化完成后,将启动入门教程:

Docker Desktop

这个教程包括一个简单的练习,以构建示例Docker镜像,将其作为容器运行,将映像推送并保存到Docker Hub。

安装 Dapr CLI

访问https://github.com/dapr/cli/releases下载所需的 Dapr CLI,如果是Linux系统可以下载dapr_linux_amd64.tar.gz;如果是Windows系统,可以下载dapr_windows_amd64.zip;如果是macOS,可以下载dapr_darwin_amd64.tar.gz。

这里以Windows系统为例。

解压到一个目录中,并把这个目录添加到系统环境变量中,然后执行如下命令验证一下:

dapr --version

如果显示如下效果就说明安装成功了:

dapr --version

初始化 Dapr

执行如下命令:

dapr init

它会帮我们创建如下内容:

  • 运行一个用于状态存储和消息代理的Redis容器实例
  • 运行一个用于提供可观察性的Zipkin容器实例
  • 创建具有上述组件定义的默认组件文件夹:用户目录中的.dapr文件夹
  • 运行用于本地演员支持的Dapr Placement服务容器实例

显示效果如下:

dapr init

执行如下命令验证一下:

docker ps

如果显示如下效果就说明初始化成功了:

docker ps

此时,访问http://localhost:9411/zipkin/就可以看到:

http://localhost:9411/zipkin/

启动 Dapr Dashboard

执行如下命令:

dapr dashboard -p 9999

显示效果如下:

dapr dashboard -p 9999

再访问http://localhost:9999/就可以看到:

Dapr Dashboard

最后,感谢你这么帅,还给我点赞

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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、付费专栏及课程。

余额充值