2017-05-09 4 views
0

여러 작성자 시나리오에서 여러 프로세스가 동일한 블록 BLOB에 쓸 수 있습니다. 낙관적 동시성을 위해 ETag를 사용할 수있는 옵션을 모색 중입니다. 저장소 클라이언트가 충돌하고 충돌이 발생하면 예외가 발생합니다. 이제는 충돌이 꽤 정상적이므로 많은 예외를 던져 프로세스의 처리량을 줄일 수 있습니다. Azure 스토리지 클라이언트에서 예외 및 예외없이 동시 업데이트를 식별 할 수있는 방법이 있습니까?Azure 저장소 BLOB - Etag를 사용한 낙관적 동시성

답변

0

알고있는 한, 동시 업데이트를 직접 확인할 수 없습니다. Azure 저장소 서비스는 BLOB가 etag에 따라 업데이트되는지 확인합니다. etag가 스토리지 서비스 자원의 etag와 동일하지 않은 경우 응답에서 409 오류가 반환됩니다.

서버를 변경할 권한이 없습니다. 409 오류 응답을 반환합니다.

유일한 방법은 blob을 업데이트하기 전입니다. 먼저 etag을 요청합니다.

그러나 다른 프로세스가 blob을 업데이트하면 etag가 변경되어 여전히 409 오류를 반환합니다.

해결 방법은 다음과 같습니다. Azure 저장소 SDK를 사용하는 경우 retry method을 제공하므로 예외를 표시하지 않고 azure에 요청을 다시 보내 BLOB를 다시 업데이트 할 수 있습니다. 그러나 푸른 색 기억 장치는 여전히 클라이언트에게 409 응답을 반환합니다.

나머지 API를 사용하는 경우 try catch를 사용하여 예외를 catch하고 나머지 API 요청을 다시 보내려는 것이 좋습니다.