Composer의 ThingWorx 모델 정의 > 시스템 > 하위 시스템 > 파일 전송 하위 시스템
파일 전송 하위 시스템
파일 전송 하위 시스템은 원격 사물, 파일 저장소 및 페더레이션 서버 간 파일 전송을 관리하는 데 필요한 방법을 제공합니다.
별도 지정이 없는 경우, 에지 클라이언트와 ThingWorx Platform 간에 파일을 전송하려면 클라이언트가 전송 시작부터 완료까지 연결되어야 합니다. ThingWorx Platform 파일 전송은 대기 가능 기능을 사용하여 ThingWorx Platform에서 복사를 수행하도록 지정함으로써 에지 클라이언트가 연결 해제되어 있는 동안 시작될 수 있습니다. 대기 가능 파일 전송은 오프라인 대기열에 배치되며 에이전트가 연결되면 실행됩니다.
* 
지속성 공급자로 PostgreSQL을 사용 중인 경우 ThingWorx 고가용성을 위한 페일오버를 지원하기 위해 오프라인 대기열이 지속됩니다.
전송이 시작된 후에는 에지 클라이언트를 연결 해제할 수 없거나 전송이 실패합니다. 대기열에 추가된 파일 전송은 대기 가능 파일 전송의 TTL(초) 구성 설정 값 이전에 시작되지 않으면 만료됩니다.
일반적으로 파일 전송은 ThingWorx Platform에 의해 제어됩니다. 그러나 파일 전송에 참여 중인 원격 사물에 EdgeControlled 사물 형태를 추가하여 활성화된 에지 제어 파일 전송이 가능합니다. 에지 제어 파일 전송에는 ThingWorx Platform에서 FileRepository 사물로 설정된 소스 또는 대상이 있어야 합니다. 에지 제어 파일 전송에서 전송은 에지 클라이언트에 의해 제어됩니다. 에지는 진행함에 따라 파일 전송의 타임스탬프를 업데이트하기 위해 Touch 서비스를 호출합니다. 에지가 이 작업을 수행하지 않으면 ThingWorx Platform에서 파일 전송 시간이 초과됩니다. 에지는 전송이 성공했는지, 아니면 완료했지만 오류가 발생했는지를 나타냅니다.
파일 전송을 시작할 때 메타데이터 매개 변수를 제공하여 컨텍스트를 포함할 수 있습니다. 이 필드는 임의적인 JSON을 포함할 수 있는 JSON 객체입니다. 특정 기본 기능은 ThingWorx Platform에서 이 필드를 사용하여 에지 클라이언트에 추가 지침을 제공합니다. 이러한 전송을 위해 메타데이터 필드의 정보는 ThingWorx Platform 이외의 프로세스에 의해 수정되지 않아야 합니다.
페더레이션 서버 간 파일 전송
페더레이션 서버 간에 파일을 전송하려면 다음을 수행하십시오.
* 
슬래시(/)는 파일 저장소에 권장되는 경로 구분 기호입니다.
1. ThingWorx ServerA와 ThingWorx ServerB 간에 페더레이션을 구성합니다. 자세한 내용은 페더레이션 구성을 참조하십시오.
2. FileRepository 사물 템플릿을 사용하여 ServerAThingA를 추가합니다.
a. ThingA에 다른 ThingWorx 서버가 액세스할 수 있도록 해당 게시됨 확인란을 선택합니다.
3. RemoteThingWithFileTransfer 사물 템플릿을 사용하여 ServerBRemoteThingA를 추가합니다.
a. 식별자 필드에 ThingA@ServerA를 입력합니다.
4. 파일(예: test.txt)을 ServerBSystemRepository 루트 폴더에 복사합니다.
5. ServerB에서 FileTransferSubsystem을 열고 다음 매개 변수 값을 사용하여 copy 서비스를 실행합니다.
sourceRepo: SystemRepository
sourcePath: /
sourceFile: test.txt
targetRepo: RemoteThingA
targetPath: /
targetFile: test.txt
다른 매개 변수의 기본값은 변경하지 마십시오.
6. ServerA/ThingworxStorage/repository/ThingA 폴더로 이동하고 해당 위치에 test.txt 파일이 성공적으로 복사되었는지 확인합니다.
구성
파일 전송 설정
데이터 유형
기본값
설명
파일 전송 풀에 할당된 최소 스레드 수
NUMBER
10
ThreadPoolExecutor에 대한 코어 풀 크기를 정의합니다. 이 스레드 풀은 플랫폼 제어 파일 전송 로직을 조정하는 데 사용됩니다.
파일 전송 풀에 할당된 최대 스레드 수
NUMBER
10
ThreadPoolExecutor에 대한 최대 스레드 풀 크기를 정의합니다.
ThingWorx가 작동 중지되면 비동기 파일 전송이 손실될 수 있습니다. 예를 들어, 이 설정의 기본값이 10이고 50개의 장기 실행 파일 전송이 제출된다고 가정합니다. ThingWorx가 작동 중지되면 40개의 파일이 손실됩니다.
새 작업 스레드를 추가하기 전 최대 대기열 엔트리
NUMBER
100
ThreadPoolExecutor에 사용된 대기열의 엔트리 수에 대한 상한을 정의합니다.
이는 한 번에 허용되는 활성 전송 수를 제한합니다.
유휴 스레드 제한 시간(초)
NUMBER
600000
ThreadPoolExecutor에서 유휴 스레드를 활성 상태로 유지하는 기간을 정의합니다. 풀은 스레드를 종료하고 지정된 시간이 지나면 코어 풀 크기로 다시 이동합니다.
파일 전송 유휴 제한 시간(초)
NUMBER
30
파일 전송 프로세스 중 모든 단계(checksum, ReadFromBinaryFile, WriteToBinaryFile, validation)에서 유휴 제한 시간이 체크됩니다. 단계가 정의된 제한 시간보다 오래 걸리는 경우 전송이 취소됩니다.
* 
비동기 복사본에는 이 매개 변수를 사용하지 마십시오.
최대 파일 전송 블록 크기(바이트)
NUMBER
128000
ReadFromBinaryFileWriteToBinaryFile 작업에 대해 요청된 바이트 수를 정의합니다. 이 작업은 각 쓰기에 대한 청크 크기를 나타냅니다.
이 변수는 시스템 수준에서 파일을 전송하는 동안 최대 블록 크기를 적용합니다.
EMS 구성이 여전히 우선합니다. 그러나 EMS가 buffer_size 변수에 지정된 값보다 큰 크기로 구성된 경우 이 변수에 지정된 값으로 이 블록 크기가 제한됩니다. EMS를 통해 더 큰 블록 크기(128KB)가 구성된 경우 이 값을 늘려야 합니다. 최대 컴파일 수준은 1MB입니다.
최대 파일 전송 크기(바이트)
NUMBER
100000000
복사 작업에서 지원하는 최대 바이트 수를 정의합니다.
소스 파일이 이 값보다 큰 경우 전송이 실패하고 오류 메시지가 표시됩니다.
오프라인 대기열에서 허용된 최대 파일 전송
NUMBER
50000
시스템에서 허용된 오프라인 대기열 파일 전송의 최대 수를 정의합니다.
오프라인 대기열에서 사물당 허용된 최대 파일 전송
NUMBER
10
사물당 허용된 오프라인 대기열 파일 전송의 최대 수를 정의합니다.
대기 가능 파일 전송의 TTL(초)
NUMBER
86400
대기열에 추가된 파일 전송이 오프라인 대기열에 머무를 수 있는 최대 시간을 정의합니다.
여기에 지정된 시간이 지나면 오프라인 대기열에서 파일 전송이 제거됩니다.
최대 허용 에지 제어 파일 전송 총 수
NUMBER
500
시스템에서 허용되는 사물당 최대 활성 에지 제어 파일 전송 수를 정의합니다.
플랫폼 간 총 동시 에지 제어 전송 수입니다. 범위는 1 ~ 1000개 전송입니다. 이는 최대 허용된 상시 전송(새 작업 스레드를 추가하기 전 최대 대기열 엔트리 설정에서 제어됨)과는 별개입니다.
사물당 최대 허용 에지 제어 파일 전송 총 수
NUMBER
2
에지 제어 사물에서 허용된 최대 동시 전송 수를 정의합니다. 범위는 1 ~ 100개 전송입니다. 예를 들어, 값 2는 에지 제어 사물 하나가 지정된 시간에 두 개의 활성 전송(업로드 또는 다운로드)만 가질 수 있음을 의미합니다. 파일 전송 출구를 대기열에서 분리하기 위한 후속 요청은 충분한 용량이 확보될 때까지 거부됩니다.
에지 제어 파일 전송에 대한 유휴 제한 시간(초)
NUMBER
600
활성 작업이 데이터 전송 또는 작업 상태 업데이트 등에 의해 영향을 받지 않고 활성 상태를 유지할 수 있는 최대 시간입니다. 범위는 1 ~ 3600초입니다. 이는 상시 전송 작업에 대한 유휴 제한 시간과 유사하지만 일반적으로 폴링 장치의 ping 주기를 처리하는 데 더 오랜 시간이 걸립니다.
도움이 되셨나요?