簡體   English   中英

在 Apache Flink 中開發和部署作業

[英]Developing and deploy jobs in Apache Flink

我們開始用 Flink 開發一些工作。 我們當前的開發/部署過程如下所示: 1. 在本地 IDE 中開發代碼並編譯 2. 將 jar 文件上傳到服務器(通過 UI) 3. 注冊新作業

然而事實證明,生成的 jar 文件大約為 70MB,上傳過程需要幾分鍾。 加快開發速度的最佳方法是什么(例如,使用服務器上的 ide?)

一種解決方案是使用版本控制系統,在提交和推送更改后,您可以在服務器本身上構建 jar。 您可以為此編寫一個簡單的腳本。

另一種需要時間和精力的解決方案是建立一個CI CD 管道,該管道將自動化整個過程,並最大限度地減少手動工作。

此外,如果您必須將 jar scp 到集群,請盡量不要使用 fat jar來最小化 jar 大小。

首先,現在上傳 70 mb 不應該花幾分鍾。 您可能需要檢查您的網絡配置。 當然,如果您的互聯網連接不好,您也無能為力。

一般來說,我會盡量避免集群測試運行。 調試緩慢且困難。 它應該只用於性能測試或在發布到生產之前。

所有邏輯都應該進行單元測試。 完整的工作應該經過集成測試,理想情況下,您還應該進行端到端測試。 我建議對外部系統使用基於 docker 的方法,並使用諸如 Kafka 的測試容器之類的東西,這樣您就可以從 IDE 運行所有測試。

進入測試集群應該是一件罕見的事情。 如果你發現任何你的自動測試沒有覆蓋的問題,你需要添加一個新的測試用例並在本地解決它,這樣它就很有可能在測試集群上解決。

編輯(地址評論):

如果您編寫 Flink 作業來生成數據要容易得多,那么這聽起來像是一個可行的選擇。 我只是擔心你還需要測試那份工作......

聽起來更像是您想要一個端到端的設置,您可以連續運行多個 Flink 作業並比較最終結果。 這是由多個 Flink 作業組成的復雜管道的常見設置。 但是,如果涉及多個團隊的組件,則維護起來相當困難,並且可能所有權狀態不明確。 我更喜歡通過擁有大量指標(產生了多少記錄,在每個管道中過濾了多少無效記錄......)並擁有僅評估(中間)輸出質量的特定驗證作業(可能涉及人類)來解決它)。

所以根據我的經驗,要么你可以在一些本地作業設置中測試邏輯,要么它太大了,你花在設置和維護測試設置上的時間比實際編寫生產代碼要多得多。 在后一種情況下,我寧願相信並投資於您無論如何都需要的(預)生產的監控和質量保證能力。

如果你真的只是想用另一個測試一個 Flink 作業,你也可以在 testcontainers 中運行 Flink 作業,所以從技術上講,這不是替代方案,而是一個補充。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM