2014-09-15 2 views
0

코드에서 정기적으로 수정되는 단일 이미지가 서버에 있습니다. 그것은 일종의 타일 모자이크이므로 사용자가 사진을 업로드 할 때 새로운 타일이 나타납니다.이미지에 대한 읽기 및 쓰기 액세스 동기화

그리고 언제든지 웹 사이트 사용자가 볼 수 있어야합니다.

문제는 동기화입니다. 읽기와 쓰기가 동시에 발생하면 때때로 이미지가 웹 사이트에 올바르게로드되지 않습니다.

이 시나리오에서 이미지의 읽기 및 쓰기를 동기화하는 올바른 방법은 무엇입니까?

+0

세마포어는 아마도? 사진의 크기는 얼마나되며 작성하는 데 얼마나 걸립니까? 5MB 이미지조차도 몇 밀리 초 밖에 걸리지 않아 웹을 통해 클라이언트로 이미지를 전송하는 시간과 비교하면 아무런 변화가 없을 것입니다. 따라서 백분율로 지각 할 수 있어야합니다. 나는 현대 디스크가 100-150MB/s이고, 우리 중 일부는 80Mbits/s (10MB/s) 이상의 인터넷 링크를 가지고 있으므로 디스크가 10 배 더 빠르며 쓰기 지연은 인터넷 전송 시간에 의해 가려 져야합니다. 또는 설정이 다른가요? –

답변

1

하나의 방법은 두 개의 이미지를 갖는 것입니다. 첫 번째 방법은 읽기 용이고 두 번째 방법은 수정 용입니다.

변경 사항은 두 번째 이미지에서 수행되며 한 번에 한 명의 사용자가 수정할 수 있도록 동기화됩니다 (사용자 호출을 잠그지 않으려면 수정을 대기시킬 수 있음).

수정을 수행하면 첫 번째 이미지의 변경 사항을 적용하고 사용자는 수정 사항을 얻을 수 있습니다.

이 방법을 사용하면 사용자가 약간 늦게 수정할 수 있습니다 (커밋 시간에 따라 다름)

+0

첫 번째 이미지가 여전히 파일에 쓰여지는 동안 요청되면 어떻게 될까요? – SharpAffair

+0

커밋 프로 시저가 수정 될 때까지 리소스를 잠글 수 있으므로 시간이 필요하지 않습니다 (두 번째 이미지 복사 및 첫 번째 이미지 삭제). –

관련 문제