노드 및 비동기 프로그래밍 개념의 비동기 성질을 이해하며 오랫동안 해왔습니다. 그러나 나는 당신이 원한다면 "동기화되어"무언가를 체크하는 동시 요청이 필요한 상황에 처해있다. 설명해 드리겠습니다 :요청 사이의 노드 j 동시성
- UserA는 존재하지 않는 리소스를 요청합니다.
- "isProcessing"에 대한 플래그를 설정하여 다른 사용자가 자원을 작성 중임을 알립니다.
- 사용자 B는 동일한 자원을 요청은 준비하는 것이 처리, 그리고 대기 본다 - 무거운 비동기의
- [무리 (폴링을 사용하여이 부분이 우리가 원하는 방식으로 작동하기 때문에,이에 초점을하지 않습니다) 물건 리소스를 생성하는 일]
- 자원, 어디
피클 날이 부분은 "2 단계"이다 (내가 말했듯이,이 부분은 작동) 그것에 대한 사람의 폴링 알림을 받게됩니다 준비 우리는 "isProcessing"플래그를 설정했다. 이것은 비동기 데이터베이스 작업 (mongo)입니다.이 작업은 2 회 이상의 요청이 동시에 인 경우 일 때 아직 완료되지 않았습니다. 따라서 여러 요청이 동일한 리소스를 만들려고합니다. 문제는 데이터베이스 쓰기가 발생할 수있는 충분한 시간 (~ 5ms)으로 요청이 분리되지만 "동시"요청의 경우에는 사라집니다.
누구든지이 문제를 해결할 수있는 좋은 조언을 제공 할 수 있습니까? 동기 (스레드 차단) 방식으로 "isProcessing"플래그를 설정해야하는 것 같습니다. 파일 시스템에 동기 작업이 있다는 것을 알고 있습니다 -이 방법이 있습니까? 우리는 언젠가 클라우드로 확장 될 멀티 코어 머신에서 노드를 사용하고 있습니다. 우리는 pm2를 사용하여 여러 코어에 걸쳐 응용 프로그램을 배포하고 있습니다. 모든 조언을 크게 주시면 감사하겠습니다.
플래그 설정이 비동기 데이터베이스 작업이어야합니까? 따라서 메모리에 즉시 플래그가 설정되어 지연이 없습니까? – jfriend00
@ jfriend00 -이를 확장하는 방법에 대해 조언 해 주시겠습니까? –