Сегодня я буду обсуждать буфер и потоки. Когда я начал работать с Node.JS, мне было трудно разобраться в этих концепциях, поэтому я делюсь своими знаниями об этих концепциях, чтобы помочь разработчикам.

Прежде всего, позвольте мне объяснить, что такое буферизация и потоковая передача, простыми словами.

Буферизация – это просто действие по сбору данных при воспроизведении видео.

Потоковая передача передает данные с сервера клиенту.

Сначала мы обсудим буферы.

Буфер

Когда мы читаем файл в Node.JS, он выделяет память, равную размеру файла, и сохраняет ее в памяти. Мы называем это пространство памяти Буфером.

Как показано в приведенном выше примере, Buffer.from() используется для преобразования значения, которое может быть String, Array, Buffer или arrayBuffer, в буфер и toString( ) используется для преобразования его обратно в буфер.

Я хотел бы подчеркнуть важную проблему с буферами.

  • Если в вашем приложении пользователи загружают огромные файлы размером 50 МБ или более, сервер быстро перегрузится, поскольку для файла размером 50 МБ требуется буфер размером 50 МБ в памяти. Представьте, что если 100 пользователей загружают данные одновременно, то это будет занимать 100 * 50 = 5000 МБ памяти.
  • Пользователь должен дождаться загрузки всех данных в память, прежде чем можно будет выполнить какую-либо операцию.

Поток

Чтобы проиллюстрировать это, я создам файл test.txt, а затем прочитаю его с помощью createReadStream().

  1. Создайте файл test.txt с указанным ниже содержимым.

2. Размер файла 29 байт.

3. В приведенном ниже коде я использую createReadStream для чтения данных с опцией highWaterMark. Эта опция определяет размер буфера фрагмента. Как вы можете видеть, данные считываются двумя частями, а затем печатаются в конечном событии.

Используя потоки, мы можем обрабатывать данные порциями, и нет необходимости сохранять все данные в памяти. По этой причине потоки рекомендуются, когда нам нужно обработать большие объемы данных.

Надеемся, теперь вы лучше поймете, что такое буферы и потоки в Node.JS. Если вам понравилась эта статья, пожалуйста, похлопайте в ладоши и подпишитесь. Спасибо за прочтение. Ваше здоровье!

Спасибо, что дочитали до конца. Пожалуйста, следите за автором и этой публикацией. Посетите Stackademic, чтобы узнать больше о том, как мы демократизируем бесплатное образование в области программирования во всем мире.