作者:米格爾·普列托
今年早些時候,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中文網其他相關文章!

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文使用lambda表達式,流API,方法參考和可選探索將功能編程集成到Java中。 它突出顯示了通過簡潔性和不變性改善代碼可讀性和可維護性等好處

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用選擇器和頻道使用單個線程有效地處理多個連接的Java的NIO API,用於非阻滯I/O。 它詳細介紹了過程,好處(可伸縮性,性能)和潛在的陷阱(複雜性,

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文詳細介紹了用於網絡通信的Java的套接字API,涵蓋了客戶服務器設置,數據處理和關鍵考慮因素,例如資源管理,錯誤處理和安全性。 它還探索了性能優化技術,我


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。