2017-09-14 68 views
2

我正在使用彈簧批處理開發批量應用程序ETL。我的ETL過程從一個基於分頁的REST API獲取數據並將其加載到Google Big-query。我想在kubernetes集羣中部署這個批處理應用程序,並希望利用pod可伸縮性功能。我瞭解春季批處理支持水平和垂直縮放。我有幾個問題: -kubernetes上的可擴展彈簧批處理作業

1)如何在kubernetes上部署此ETL應用程序,以便使用遠程分塊/遠程分區按需創建Pod?

2)我假設會有主要的主控制器和基於負載的不同的從屬控制器。這是對的嗎?

3)有一個kubernetes批處理API也可用。使用kubernetes批處理API或使用Spring Cloud功能。這個選項是否更好?

+0

海你有沒有得到這個問題的解決方案 –

回答

1

我已經使用Spring Boot,Spring Batch和Spring Cloud Task來執行類似於您想要的操作。也許它會幫助你。

它的工作方式是這樣的:我有一個管理器應用程序,用我的主應用程序在Kubernetes上部署Pod。主應用程序執行一些工作,然後開始使用「工作人員」部署其他幾個吊艙的遠程分區。

試圖回答您的問題:

1)您可以創建一個具有Spring Batch的工作的應用的一個碼頭工人的形象。 我們稱之爲主應用程序。 將部署主應用程序的應用程序可以使用來自spring cloud deployer kubernetes的TaskLauncher或AppDeployer

2)正確。在這種情況下,您可以使用遠程分區。每個分區都將是另一個具有Job的Docker鏡像。這將是你的工人。 遠程分區的一個例子可以發現here

3)在我的情況下,我使用了spring批處理,並設法做我需要的一切。我現在遇到的唯一問題是升級和降級羣集。由於我的工作人員不具有狀態,因此當從集羣中刪除實例時遇到了一些問題。如果你不需要升級或縮減你的羣集,那麼你很好。