fs.readFile vs fs.readFilesync

akanana·2023년 1월 6일
0

개인공부

목록 보기
4/30
post-thumbnail

fs.readFile vs fs.readFilesync


nodejs에서는 기본적으로 명령어를 비동기적으로 처리를 진행한다. 다음 코드를 보면,

fs.readFile('./write.txt',(err,data)=>{
    if(err){throw err}
    console.log('1)',data.toString());
})

fs.readFile('./write.txt',(err,data)=>{
    if(err){throw err}
    console.log('2)',data.toString());
})
fs.readFile('./write.txt',(err,data)=>{
    if(err){throw err}
    console.log('3)',data.toString());
})

위와 같은 코드가 존재시, 1) ... 2) ... 3)...처럼 출력되는 것이 아닌, 랜덤한 순서로 출력이 진행된다.

이를 동기적으로 처리하기위해, readFileSync를 사용할 수 있다.

그런데...

이러한 비동기 방식은 동기방식보다 수천배나 느린 결과를 불러올 수 있다.

비동기로 작업시, 위처럼 2초의 setTimeoutreadFile이 동기적으로 실행되므로, 1.txt와 2.txt가 거의 비슷하게 진행된 후, 2초의 지연이 끝난다.

동기작업을 보면, 1.txt를 읽은 후, 2.txt를 읽어오기 시작한다.

만약 웹서버에서 SQL을 호출하는 작업들로 이루어진 request가 발생한다고 생각하자. 이때에는 비동기 작업은 병렬적으로 처리되고, 유연한 확장성을 지닌다.

하지만 동기적으로 작업을 진행시에는 STW를 발생시킬 수 밖에 없는 구조가 생성되고, 이는 서비스상에 심각한 지연을 야기할 수 있다.

출처

0개의 댓글