6
Blob 저장소에 일부 이미지를 동시에로드하는 작업이 있습니다. 얼룩의 이름은 얼룩의 md5로 정의됩니다. 다른 스레드가 다른 위치에서 동일한 파일을로드하려고 시도 할 수 있습니다.동일한 이름의 Azure Blob 저장소에 Blob 만들기 동시에
이제는 이미 같은 blob을 업로드하려고 시도하는 경우 다른 파일이 동일한 파일을로드하는 것을 차단하는 방법을 알아야합니다.
Blob 저장소에 일부 이미지를 동시에로드하는 작업이 있습니다. 얼룩의 이름은 얼룩의 md5로 정의됩니다. 다른 스레드가 다른 위치에서 동일한 파일을로드하려고 시도 할 수 있습니다.동일한 이름의 Azure Blob 저장소에 Blob 만들기 동시에
이제는 이미 같은 blob을 업로드하려고 시도하는 경우 다른 파일이 동일한 파일을로드하는 것을 차단하는 방법을 알아야합니다.
낙천적 동시성을 사용하여 임대하지 않고 수행 할 수 있습니다. 이 blob이이 이름을 가진 blob의 모든 etag와 다를 것이라고 말하는 액세스 조건을 기본적으로 설정하십시오. 실제로 일부 etag을 가진 얼룩이 있다면 두 번째 업로드가 실패합니다.
var access = AccessCondition.GenerateIfNoneMatchCondition("*");
await blobRef.UploadFromStreamAsync(stream, access, null, null);
블롭이없고 두 프로세스가 동일한 파일을 동시에 업로드하기 시작하면 어떻게됩니까? 내가 잘못 본 것이 아니라면,이 특정 접근 조건에 대해 입방체가 저장소에 있어야합니다. –
저장소에 반드시 있어야합니다. 우리는 현재이 방법을 사용하고 있습니다. 푸른 색 기억 장치를 올바르게 이해하면 두 프로세스 모두 데이터를 업로드합니다. 결국 매니페스트가 블롭 이름으로 여러 부분을 결합하여 업로드됩니다. 이것은 원자 적 연산이며 호출 중 하나만 성공합니다. –
감사합니다. 나는 그것을 결코 시도하지 않았다. 그래서 나는 호기심을 가지고 있었다. 시나리오에서는 블록을 블록으로 분할하고 블록을 업로드합니다. blob이 정말로 작아서 부분으로 분해되지 않는 시나리오로 해본 적이 있습니까? –