다음을 통해 공유


BufferScheduler class

이 클래스는 Node.js 읽기 가능한 스트림을 입력으로 허용하고, maxBuffers에 도달할 때까지 스트림에서 내부 버퍼 구조로 데이터를 계속 읽습니다. 사용 가능한 모든 버퍼는 outgoingHandler를 트리거하려고 합니다.

내부 버퍼 구조에는 들어오는 버퍼 배열과 나가는 버퍼 배열이 포함됩니다. 들어오는 버퍼 배열에는 "빈" 버퍼를 새 들어오는 데이터로 채울 수 있습니다. 나가는 배열에는 outgoingHandler에서 처리할 채워진 버퍼가 포함됩니다. 위의 모든 버퍼 크기는 parameter bufferSize에 의해 정의됩니다.

NUM_OF_ALL_BUFFERS = BUFFERS_IN_INCOMING + BUFFERS_IN_OUTGOING + BUFFERS_UNDER_HANDLING

maxBuffers보다 작거나 같은 NUM_OF_ALL_BUFFERS

성능 향상 팁:

  1. 입력 스트림 highWaterMark는 Buffer.concat() 작업을 방지하는 bufferSize 매개 변수를 사용하여 동일한 값을 설정하는 것이 좋습니다.
  2. 동시성은 maxBuffers보다 작은 값을 설정해야 하며, 이는 나가는 핸들러가 스트림 데이터를 기다릴 때 가능성을 줄이는 데 도움이 됩니다. 이 경우 나가는 처리기가 차단됩니다. 나가는 큐는 비어 있지 않아야 합니다.

생성자

BufferScheduler(ReadableStream, number, number, OutgoingHandler, number, BufferEncoding)

BufferScheduler의 인스턴스를 만듭니다.

메서드

do()

스케줄러를 시작하고 나가는Handlers의 스트림이 오류를 반환할 때 오류를 반환합니다.

생성자 세부 정보

BufferScheduler(ReadableStream, number, number, OutgoingHandler, number, BufferEncoding)

BufferScheduler의 인스턴스를 만듭니다.

new BufferScheduler(readable: ReadableStream, bufferSize: number, maxBuffers: number, outgoingHandler: OutgoingHandler, concurrency: number, encoding?: BufferEncoding)

매개 변수

readable

ReadableStream

Node.js 읽기 가능한 스트림

bufferSize

number

유지 관리되는 모든 버퍼의 버퍼 크기

maxBuffers

number

할당할 수 있는 버퍼 수

outgoingHandler
OutgoingHandler

버퍼가 스트림 데이터로 완전히 채워질 때 트리거되도록 예약된 비동기 함수

concurrency

number

outgoingHandlers 실행 동시성(>0)

encoding

BufferEncoding

[선택 사항] 문자열 스트림일 때 Readable stream 의 인코딩

메서드 세부 정보

do()

스케줄러를 시작하고 나가는Handlers의 스트림이 오류를 반환할 때 오류를 반환합니다.

function do(): Promise<void>

반환

Promise<void>