찾다
Javajava지도 시간새로운 Conductor Java Client v4 발표

Announcing the New Conductor Java Client v4

作者:米格爾·普列托


今年早些時候,Python SDK 進行了重大改版。現在,其他 Conductor SDK 正在進行重大改造,我們很高興地宣布 Java Client v4,具有顯著的設計增強、性能改進和優化的依賴項。

在我們的 Java 客戶端 v4 中,我們透過改進其設計減少了依賴足跡。我們新增了篩選器、事件和偵聽器來消除直接依賴關係。這個設計決策是經過深思熟慮後做出的,旨在讓客戶更易於使用、擴展和維護。

繼續閱讀以了解更多資訊!


我們為什麼要這樣做?

我們已聽取您的回饋,並正在努力改善開發者體驗。 Orkes 和 Conductor OSS 社群正在管理兩個獨立的 Java 用戶端/SDK 項目,這兩個項目與我們行業中的許多項目一樣,都累積了一些技術債。我們認為現在是解決這筆債務的最佳時機。

我們想要立即解決的一些關鍵問題是:

  1. 一個 Conductor Java 客戶端(統治它們)
    目標是將兩個現有專案整合為一個統一的、更易於管理的解決方案,汲取每個專案中最強大的元素。這應該轉化為更快的更新、更好的支援和更具凝聚力的開發體驗。

  2. 依賴最佳化
    作為程式碼清理的一部分,我們刪除了幾個依賴項:

    • 對後端程式碼的依賴 - 先前的 OSS Java 用戶端和 SDK 專案是 Conductor OSS 儲存庫的一部分,並且依賴conductor-commons。雖然這使後端/客戶端模型保持同步,但這也意味著一些與後端相關的程式碼和依賴項會洩漏給客戶端。
    • 對已棄用工件的依賴。
    • 對你不需要的東西的依賴。

    透過刪除硬編碼的依賴項,使用者和貢獻者可以擴展客戶端,而無需鎖定到特定的庫或工具。

  3. 更多模組化
    我們重組了專案以提高模組化程度,使客戶端更加靈活且更易於自訂。

    透過此模組化方法,您可以透過事件、偵聽器和篩選器整合您喜歡的監控、日誌記錄或發現工具。這不僅簡化了定制,還使程式碼庫更具可維護性和麵向未來的能力,使開發人員能夠根據需要建立和擴展自己的擴充。

  4. 程式碼清理/重構
    有了更乾淨的程式碼庫,未來的開發應該更快、更不容易出錯,也讓社群貢獻變得更容易。

  5. 更好的例子
    我們在專案中引入了一個專門用於範例的模組。雖然它仍在進行中,但無論您是入門還是尋找高級用例,該模組都將作為實際範例的中心資源。

家,甜蜜的家

官方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 Client v4 발표의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Java가 크로스 플랫폼 데스크톱 응용 프로그램을 개발하기 위해 인기있는 선택 인 이유는 무엇입니까?Java가 크로스 플랫폼 데스크톱 응용 프로그램을 개발하기 위해 인기있는 선택 인 이유는 무엇입니까?Apr 25, 2025 am 12:23 AM

javaispopularforcross-platformdesktopapplicationsduetoits "writeonce, runanywhere"철학

Java의 플랫폼 별 코드 작성 상황에 대해 토론하십시오.Java의 플랫폼 별 코드 작성 상황에 대해 토론하십시오.Apr 25, 2025 am 12:22 AM

Java에서 플랫폼 별 코드를 작성하는 이유에는 특정 운영 체제 기능에 대한 액세스, 특정 하드웨어와 상호 작용하고 성능 최적화가 포함됩니다. 1) JNA 또는 JNI를 사용하여 Windows 레지스트리에 액세스하십시오. 2) JNI를 통한 Linux 특이 적 하드웨어 드라이버와 상호 작용; 3) 금속을 사용하여 JNI를 통해 MacOS의 게임 성능을 최적화하십시오. 그럼에도 불구하고 플랫폼 별 코드를 작성하면 코드의 이식성에 영향을 미치고 복잡성을 높이며 잠재적으로 성능 오버 헤드 및 보안 위험을 초래할 수 있습니다.

플랫폼 독립성과 관련된 Java 개발의 미래 트렌드는 무엇입니까?플랫폼 독립성과 관련된 Java 개발의 미래 트렌드는 무엇입니까?Apr 25, 2025 am 12:12 AM

Java는 Cloud-Native Applications, Multi-Platform 배포 및 교차 운용성을 통해 플랫폼 독립성을 더욱 향상시킬 것입니다. 1) Cloud Native Applications는 Graalvm 및 Quarkus를 사용하여 시작 속도를 높입니다. 2) Java는 임베디드 장치, 모바일 장치 및 양자 컴퓨터로 확장됩니다. 3) Graalvm을 통해 Java는 Python 및 JavaScript와 같은 언어와 완벽하게 통합되어 언어 교차 수용 가능성을 향상시킵니다.

Java의 강력한 타이핑은 플랫폼 독립성에 어떻게 기여합니까?Java의 강력한 타이핑은 플랫폼 독립성에 어떻게 기여합니까?Apr 25, 2025 am 12:11 AM

Java의 강력한 유형 시스템은 유형 안전, 통합 유형 변환 및 다형성을 통해 플랫폼 독립성을 보장합니다. 1) 유형 안전성 런타임 오류를 피하기 위해 컴파일 시간에 유형 검사를 수행합니다. 2) 통합 유형 변환 규칙은 모든 플랫폼에서 일관성이 있습니다. 3) 다형성 및 인터페이스 메커니즘은 코드가 다른 플랫폼에서 일관되게 행동하게 만듭니다.

JNI (Java Native Interface)가 플랫폼 독립성을 손상시킬 수있는 방법을 설명하십시오.JNI (Java Native Interface)가 플랫폼 독립성을 손상시킬 수있는 방법을 설명하십시오.Apr 25, 2025 am 12:07 AM

JNI는 Java의 플랫폼 독립성을 파괴 할 것입니다. 1) JNI는 특정 플랫폼에 대한 로컬 라이브러리를 요구합니다. 2) 대상 플랫폼에서 로컬 코드를 컴파일하고 연결해야합니다. 3) 운영 체제 또는 JVM의 다른 버전은 다른 로컬 라이브러리 버전을 필요로 할 수 있습니다.

Java의 플랫폼 독립성을 위협하거나 향상시키는 새로운 기술이 있습니까?Java의 플랫폼 독립성을 위협하거나 향상시키는 새로운 기술이 있습니까?Apr 24, 2025 am 12:11 AM

신흥 기술은 위협을 일으키고 Java의 플랫폼 독립성을 향상시킵니다. 1) Docker와 같은 클라우드 컴퓨팅 및 컨테이너화 기술은 Java의 플랫폼 독립성을 향상 시키지만 다양한 클라우드 환경에 적응하도록 최적화되어야합니다. 2) WebAssembly는 Graalvm을 통해 Java 코드를 컴파일하여 플랫폼 독립성을 확장하지만 성능을 위해 다른 언어와 경쟁해야합니다.

JVM의 다른 구현은 무엇이며, 모두 같은 수준의 플랫폼 독립성을 제공합니까?JVM의 다른 구현은 무엇이며, 모두 같은 수준의 플랫폼 독립성을 제공합니까?Apr 24, 2025 am 12:10 AM

다른 JVM 구현은 플랫폼 독립성을 제공 할 수 있지만 성능은 약간 다릅니다. 1. OracleHotspot 및 OpenJDKJVM 플랫폼 독립성에서 유사하게 수행되지만 OpenJDK에는 추가 구성이 필요할 수 있습니다. 2. IBMJ9JVM은 특정 운영 체제에서 최적화를 수행합니다. 3. Graalvm은 여러 언어를 지원하며 추가 구성이 필요합니다. 4. AzulzingJVM에는 특정 플랫폼 조정이 필요합니다.

플랫폼 독립성은 개발 비용과 시간을 어떻게 줄입니까?플랫폼 독립성은 개발 비용과 시간을 어떻게 줄입니까?Apr 24, 2025 am 12:08 AM

플랫폼 독립성은 여러 운영 체제에서 동일한 코드 세트를 실행하여 개발 비용을 줄이고 개발 시간을 단축시킵니다. 구체적으로, 그것은 다음과 같이 나타납니다. 1. 개발 시간을 줄이면 하나의 코드 세트 만 필요합니다. 2. 유지 보수 비용을 줄이고 테스트 프로세스를 통합합니다. 3. 배포 프로세스를 단순화하기위한 빠른 반복 및 팀 협업.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기