캐티
1k
2021-04-01 02:22:28 작성 2021-04-01 02:38:31 수정됨
1
573

병렬처리 기법, 버스트 제한


버스터 제한은 bust 말고 burst 를 사용합니다.
이해를 돕기위하여 직역을 하면 난사(burst) 정도로 번역이 되요.

극단적으로 비동기 로직을 걸려면 루트(/, C:\) 드라이브에 경로 전체 탐색을 비동기로만 구동하면 되는데요.

루트 드라이브에 폴더마다 파일은 많다고 가정하고 폴더마다 10개 하위폴더만이 존재하여도 동시에 아주 많은 조회요청이 디바이스에 보내지게 되요. 시스템에 치명적이져.

일반적으로 싱글스레드 기반으로 동기로직을 사용하므로 이런 문제는 발생하지 않아요.

노드js에서 싱글 쓰레드기반에 프로그램 구동을 하지만 비동기 로직으로 시스템에 요청을 보내게되면 동시에 동작을 수행하여 아주 많은 요청과 대기열이 시스템 내부에 쌓이게되어요. (그리고 터져요 대충 이런)

비동기 프로그램에서는 이런 예외상황에 대응하기 위해서 프로그래머는 동시에 수행하는 기능에 제한을 걸어야해요. 2개나 4개나 그냥 보통 싱글쓰레드 기반인 1개보다는 많은 정도로만 사용해요.

GitHub - feross/run-parallel-limit: Run an array of functions in parallel, but limit the number of tasks executing at the same time

Promise.all 이나 run-parallel-limit 는 프로그램 내부에 대기열을 처리하는데는 중점을 둔 듯 해요. 파일시스템에 디렉토리 탐색처럼 폴더를 열면 그 아래 폴더들이 나오는 너무 큰 구조에는 여전히 제한이 걸리겠어요.

어쩌면 다른 비동기 기반에 언어들의 사정은 크게 다르지 않을듯 해요.

시뮬레이션 예제들을 만들어서 웹에 올려놓으면 좋을것 같다는 생각이 들어요. 그럼 솔루션 소스코드는 추후에 ...

0
  • 댓글 1

  • kenu
    52k
    2021-04-01 05:57:29
    해당 게시물은 관리자에 의해 칼럼에서 Tips & 강좌로 이동 되었습니다.
  • 로그인을 하시면 댓글을 등록할 수 있습니다.