使用 Dapr 缩短软件开发周期

Microsoft DevOps 文档里的文章(https://docs.microsoft.com/zh-cn/azure/devops/report/dashboards/cycle-time-and-lead-time?view=azure-devops)中的这张图片在给我们介绍了 什么是周期时间 以及它如何影响我的项目流时非常有影响力。

b80b25d09811200aea2f38c19bb8c2e2.png

第一次输入 "正在进行" 或 "已解决" 状态类别到输入 "已完成" 状态类别,计算周期时间。当开发人员编写代码时,能够快速验证更改并进行修订对于保持较短的周期时间至关重要。

丰田生产方式之父大野耐一曾经说过:我们唯一要做的就是降低从接到订单到交付产品给客户的周期时间。周期时间的降低可以有效保证软件的按时交付 。所以周期时间是软件交付的核心目标。

特别是微服务的设计和开发,通常需要达成下列4个目标:

  • 构建的API 驱动设计的微服务

  • 一切都可以在本地构建、测试和运行,而无需复杂的设置。

  • 云端和本地依赖关系的等效性

  • 设备环境无关,可以自由在Windows,Linux,Mac 之间切换。

我们借助于Dapr 可以非常容易的达成以上4个目标, 使用 Docker Compose 和 Dapr 技巧进行本地开发,测试和生产环境运行于Kubernetes, Kubernetes现在是各大云厂的标配服务。借助于Dapr 的语言无关性,平台无关性,我们可以在环境上尽量的缩短了时间,保持较短的周期时间交付软件。

我们可以在大脑里面来回顾一下我们的开发过程,对于每个任务/代码更改:

  1. 开发人员会将更改部署到生产环境

  2. 如果发现任何错误,请重新部署旧 镜像

  3. 在本地修复所有更改

  4. 推动其分支以生成可部署的内部版本,然后返回到 (1)

只有当开发人员脱离这个循环时,他们才能将他们的代码签入主程序。这个过程太疯狂了!仅第 4 步在镜像创建和部署之间就花费了大约 20 分钟。两三个遗漏的错误可能会使开发人员在一天中花掉大约1个小时,并且考虑到除了日常工作之外,我们都在从事这项工作,这扼杀了生产力。还有可能要考虑到部署对依赖项的更改所需的周期,此处的部署花费了更长的时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值