이것은 호스트 클러스터 관리에 일반적으로 나타나는 일반적인 작업 흐름/오케스트레이션 문제 인 것 같습니다.
Parallec를 사용하면 onCompleted()
처리기의 해시지도에 응답/작업 상태를 저장하고 해시지도 폴링을 유지할 수 있습니다. 적어도 N 개의 작업을 수집 할 때마다 현재 스테이지를 완료하고 다음 라운드에서 실행할 다른 병렬 작업을 시작할 수 있습니다.
1000 개의 호스트 H1 ... H1000을 사용하여 5 개의 쉘 스크립트 S1 ... S5를 5 단계로 순차적으로 실행한다고 가정 해보십시오.
동시 해시 맵을 만들어 각 호스트의 실행 상태를 저장할 수 있습니다. 각 스크립트/스테이지에는 [NOT_RUN | 러닝 | COMPLETED_SUCCESS (COMPLETED_ERROR)] 상태가됩니다. 현재 병렬 작업이 실행중인 각 호스트에 대해 저장할 수도 있습니다.
스크립트 1을 첫 번째 병렬 작업으로 실행하기 위해 1,000 개의 호스트를 모두 시작합니다. 실행 전에 해시 맵의 각 요소를 < #, RUNNING> 상태로 설정하십시오. 현재 스레드를 차단하지 않도록 작업 asynchronously을 실행해야합니다. 응답 핸들러 onCompleted()
에서 결과를 구문 분석하고 해당 항목을 맵에서 COMPLETED_X 상태로 업데이트합니다.
이지도를 일정 간격으로 폴링 할 수 있습니다. 완료된 스테이지에서 적어도 K 개의 작업 (또는 마지막 작업 그룹)이 남아 있고 해당 작업을 완료 한 K 개의 호스트와 함께 다른 병렬 작업을 시작합니다. 현재 단계는 다음 단계로 이동합니다.
병렬 작업에서 각 호스트는 다른 단계에서 실행될 수 있습니다. 일부는 스크립트 1이고 일부는 스크립트 4입니다. 이것은 다른 호스트에서 다른 요청으로 지원됩니다. http://www.parallec.io/docs/submit-task/#apis-on-variable-replacement-for-heterogeneous-requests
요약하면, 기본 배치는 작은 배치로 실행하여 다음 단계로 이동할 수있는 호스트를 확인하는 것입니다. 관리자 스레드는 다음 라운드에서 현재 스테이지를 완료 한 호스트 만 픽업하므로 잠금이 필요하지 않습니다.
JSCH (http://www.jcraft.com/jsch/)를 사용해 보셨습니까? –