node.js의 파일에 대한 액세스를 조정하는 가장 좋은 방법은 무엇입니까?nodejs의 파일 시스템 활동 조정
재개 가능한 매우 큰 파일 (10sGB)에 대해 http 기반 파일 업 로더를 작성하려고합니다. 최선의 접근 방식이 동일한 파일을 동시에 업로드하려고하는 두 사람을 처리하는 것이 무엇인지 알아 내려고합니다 ... 또한 node.js의 복사본이 두 개 이상있는 가능성을 미리 생각하려고합니다. http 서버가로드 밸런서 뒤에 있기 때문에 중복 업로드를 포착하는 것은 코드 자체에만 의존 할 수 없습니다.
예를 들어, 파이썬에서는 open() 호출에 올바른 플래그를 전달하여 파일을 만들 수 있습니다. 기본 node.js 파일을 새로 열 때 기본 파일인지 확실하지 않습니다.
또 다른 옵션은 내가 생각하지만, 정말,이 상태를 추적하기 위해 원자 트랜잭션을 지원하는 비동기 드라이버 데이터베이스를 사용하고 추구하고 싶지 않아 ...
내가 정확히 설명했듯이 구현 한 것을 분명히해야합니다. 내가 당신에게 인용 할 부분에 대한 설명은 ... "다른 사람이 현재 같은 파일을 업로드하는 것으로 판명되면 서버는 어떤 청크를 업로드 할 것인지 결정합니다". node.js (세부 사항)에서 이것을 어떻게 구현합니까? 청크가 현재 업 로더에 의해 버려 졌는지 여부를 서버가 어떻게 구별합니까? 두 개의 청크가 동시에 업로드되면 어떻게하면 하나가 받아 들여지고 다른 하나는 거부 될 수 있습니다 (어떤 종류의 원자 적 연산)? – Cyclone
1MB와 같이 청크 크기를 지정하고 사용자가 업로드하는 사이에 청크를 배포합니다. 일반적으로 첫 번째 사용자는 첫 번째 청크를 업로드하고 두 번째 사용자는 파일의 두 번째 절반을 업로드합니다. n 사용자가 동일한 파일을 업로드하기 시작하면 현재 업 로더의 나머지 청크 중 1/n을 가져 와서 새 사용자에게 넘깁니다. 각 클라이언트가 보내야하는 초기 해시 배열을 기록한 경우 업로드가 완료되고 확인 된 후 각 청크에 플래그를 설정할 수 있습니다. – fent
그리고이 시스템에서는 사용자가 업로드를 시작하기 전에 파일의 해시를 보내야합니다. 두 사용자가 동일한 파일에서 동일한 청크를 업로드하는 상황에 절대로 있어서는 안됩니다. – fent