作者:米格尔·普列托
今年早些时候,Python SDK 进行了重大改版。现在,其他 Conductor SDK 正在进行重大改造,我们很高兴地宣布 Java Client v4,具有显着的设计增强、性能改进和优化的依赖项。
在我们的 Java 客户端 v4 中,我们通过改进其设计减少了依赖足迹。我们添加了过滤器、事件和侦听器来消除直接依赖关系。这个设计决策是经过深思熟虑后做出的,旨在让客户端更易于使用、扩展和维护。
继续阅读以了解更多信息!
我们为什么要这样做?
我们已听取您的反馈,并正在努力改善开发者体验。 Orkes 和 Conductor OSS 社区正在管理两个独立的 Java 客户端/SDK 项目,这两个项目与我们行业中的许多项目一样,都积累了一些技术债务。我们认为现在是解决这笔债务的最佳时机。
我们想要立即解决的一些关键问题是:
一个 Conductor Java 客户端(统治它们)
目标是将两个现有项目整合为一个统一的、更易于管理的解决方案,汲取每个项目中最强大的元素。这应该转化为更快的更新、更好的支持和更具凝聚力的开发体验。-
依赖优化
作为代码清理的一部分,我们删除了几个依赖项:- 对后端代码的依赖 - 之前的 OSS Java 客户端和 SDK 项目是 Conductor OSS 存储库的一部分,并且依赖于conductor-commons。虽然这使后端/客户端模型保持同步,但这也意味着一些与后端相关的代码和依赖项会泄漏给客户端。
- 对已弃用工件的依赖。
- 对你不需要的东西的依赖。
通过删除硬编码的依赖项,用户和贡献者可以扩展客户端,而无需锁定到特定的库或工具。
-
更多模块化
我们重组了项目以提高模块化程度,使客户端更加灵活且更易于定制。通过这种模块化方法,您可以通过事件、侦听器和过滤器集成您喜欢的监控、日志记录或发现工具。这不仅简化了定制,还使代码库更具可维护性和面向未来的能力,使开发人员能够根据需要构建和扩展自己的扩展。
代码清理/重构
有了更干净的代码库,未来的开发应该更快、更不容易出错,也让社区贡献变得更容易。更好的例子
我们在项目中引入了一个专门用于示例的模块。虽然它仍在进行中,但无论您是入门还是寻找高级用例,该模块都将作为实际示例的中心资源。
家,甜蜜的家
官方 Conductor 客户端和 SDK 目前位于 https://github.com/conductor-sdk,但 OSS Java 客户端/SDK 除外,它是 Conductor OSS 存储库的一部分 https://github.com /orkes-io/orkes-conductor-client/tree/main.
展望未来,所有 Conductor 客户端和 SDK 最终都将存放在conductor-oss/conductor 存储库中的同一个conductor-clients 目录中。前往那里查找 Java 客户端/SDK v4 的源代码。
Java 客户端 v4 有哪些新增功能?
1.优化依赖
与它所取代的两个项目相比,Java Client v4 引入了更精简、更高效的依赖项集。
我们删除了所有未使用的、已弃用的和不必要的依赖项,显着减少了类路径污染。 这种优化不仅可以最大限度地降低库之间发生冲突的风险,而且还可以提高整体性能和可维护性。通过简化依赖关系树,v4 提供了一个更干净、更轻量的客户端,更易于使用并更顺利地集成到您的项目中。
2.新的TaskRunner
TaskRunner 已被重构。它取代了 TaskPollExecutor,因为两者共享相同的核心职责:管理工作人员用于轮询、执行和更新任务的线程池。
这样,我们就删除了对 Netflix Eureka 和 Spectator 的直接依赖,引入了事件驱动机制,并添加了 PollFilter——一个确定是否应该进行轮询的回调。此外,错误处理和并发管理也得到了改进。
如果您正在使用 Eureka 和 Spectator,无需担心 — 提供的事件和过滤器可与这些出色的工具和库无缝集成。
3. 使用事件、侦听器和过滤器的可扩展性
Java Client v4 通过事件、侦听器和过滤器引入了增强的可扩展性。这些可用于各种目的,包括指标跟踪、日志记录、审核以及根据特定条件触发自定义操作。
例如,您可以使用 Lambda 函数作为 PollFilter 来检查 Eureka 报告的实例状态。如果实例被标记为 UP(意味着 Eureka 认为它健康且可用),那么工作线程将继续轮询任务。
此外,还可以注册一个监听器来处理 PollCompleted 事件。在这种情况下,侦听器记录事件详细信息并使用 Prometheus 跟踪轮询过程的持续时间,将任务类型附加为详细指标跟踪的标签。这种方法不仅增加了灵活性,还提高了对客户行为的可观察性和控制力。
var runnerConfigurer = new TaskRunnerConfigurer .Builder(taskClient, List.of(new HelloWorldWorker())) .withThreadCount(10) .withPollFilter((String taskType, String domain) -> { return eurekaClient.getInstanceRemoteStatus().equals(InstanceStatus.UP); }) .withListener(PollCompleted.class, (e) -> { log.info("Poll Completed {}", e); var timer = prometheusRegistry.timer("poll_completed", "type", e.getTaskType()); timer.record(e.getDuration()); }) .build(); runnerConfigurer.init();
客户端还有一些专门的接口,例如 MetricsCollector,它构建在这些事件和侦听器之上。我们将很快提供指标收集器的具体实现。
4. OkHttp3 v4 — 适量的功能 OOTB
OkHttp3 v4 是最流行且最受好评的 Java HTTP 客户端之一。通过升级,我们的 Java 客户端/SDK v4 现在支持开箱即用的 HTTP2 和 Gzip,使您能够更快地发出 HTTP 请求或数据传输。虽然还有其他优秀的选择,但选择 OkHTTP 是因为它的简单性、性能和可靠性。
随着 OkHttp 升级,我们还决定删除一个抽象层 Jersey。与 OkHttp 等简单的 HTTP 客户端相比,Jersey 功能更丰富,但也更重量级。如果您只想发出基本的 HTTP 请求,其中一些功能(例如依赖项注入、过滤器和异常映射器)可能有些过头了。
5. 轻松从 OSS 迁移到 Orkes
客户端促进了 OSS Conductor 和 Orkes Conductor 之间的无缝集成,使用户能够根据需求的变化灵活切换,同时首先保持对开源社区的支持。
Orkes 客户端模块只是通过 HeaderSupplier 添加身份验证来扩展 Conductor 客户端。
对于使用 Client v4 创建了 Worker 但想要尝试 Orkes Conductor 的 OSS 用户,他们只需将 orkes-conductor-client 依赖项添加到他们的项目中,并使用 OrkesAuthentication 作为标头供应商实例化客户端。切换回 OSS 就像删除标头供应商一样简单。
var client = ConductorClient.builder() .basePath(BASE_PATH) .addHeaderSupplier(new OrkesAuthentication(KEY, SECRET)) .build(); return new TaskClient(client); // Use this TaskClient with TaskRunner to initialize workers
找出Conductor OSS和Orkes Conductor之间的6个区别。
6.改进的示例和文档
我们已经开始将示例整合到专用模块中,并进行了涵盖授权、管理工作流程和任务定义、调度工作流程等关键领域的改进。虽然该模块仍在开发中,但我们将不断添加和完善示例,以提供更好的指导并涵盖实际用例。
我们的目标是让开发人员能够有效地使用我们的客户端/SDK,并随着模块的发展探索最佳实践。
Java 客户端 v4 入门
以下是开始使用 Java 客户端 v4 的方法:
第 1 步:旋转导体
使用 Conductor OSS 或 Orkes Conductor:
- Conductor OSS—从源代码运行它或使用 Docker。
- Orkes Conductor—试用 Orkes Playground 或注册免费试用。
第 2 步:将conductor-client依赖项添加到您的项目中
对于基于 Gradle 的项目:
implementation 'org.conductoross:conductor-client:4.0.0' implementation 'io.orkes:orkes-conductor-client:4.0.0' // required if using Orkes Conductor
对于基于 Maven 的项目:
<dependency> <groupid>org.conductoross</groupid> <artifactid>conductor-client</artifactid> <version>4.0.0</version> </dependency> <dependency> <groupid>io.orkes</groupid> <artifactid>orkes-conductor-client</artifactid> <version>4.0.0</version> </dependency>
以上是宣布推出新的 Conductor Java 客户端 v4的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。