Сегодня я буду обсуждать буфер и потоки. Когда я начал работать с Node.JS, мне было трудно разобраться в этих концепциях, поэтому я делюсь своими знаниями об этих концепциях, чтобы помочь разработчикам.
Прежде всего, позвольте мне объяснить, что такое буферизация и потоковая передача, простыми словами.
Буферизация – это просто действие по сбору данных при воспроизведении видео.
Потоковая передача передает данные с сервера клиенту.
Сначала мы обсудим буферы.
Буфер
Когда мы читаем файл в Node.JS, он выделяет память, равную размеру файла, и сохраняет ее в памяти. Мы называем это пространство памяти Буфером.
Как показано в приведенном выше примере, Buffer.from() используется для преобразования значения, которое может быть String, Array, Buffer или arrayBuffer, в буфер и toString( ) используется для преобразования его обратно в буфер.
Я хотел бы подчеркнуть важную проблему с буферами.
- Если в вашем приложении пользователи загружают огромные файлы размером 50 МБ или более, сервер быстро перегрузится, поскольку для файла размером 50 МБ требуется буфер размером 50 МБ в памяти. Представьте, что если 100 пользователей загружают данные одновременно, то это будет занимать 100 * 50 = 5000 МБ памяти.
- Пользователь должен дождаться загрузки всех данных в память, прежде чем можно будет выполнить какую-либо операцию.
Поток
Чтобы проиллюстрировать это, я создам файл test.txt, а затем прочитаю его с помощью createReadStream().
- Создайте файл test.txt с указанным ниже содержимым.
2. Размер файла 29 байт.
3. В приведенном ниже коде я использую createReadStream для чтения данных с опцией highWaterMark. Эта опция определяет размер буфера фрагмента. Как вы можете видеть, данные считываются двумя частями, а затем печатаются в конечном событии.
Используя потоки, мы можем обрабатывать данные порциями, и нет необходимости сохранять все данные в памяти. По этой причине потоки рекомендуются, когда нам нужно обработать большие объемы данных.
Надеемся, теперь вы лучше поймете, что такое буферы и потоки в Node.JS. Если вам понравилась эта статья, пожалуйста, похлопайте в ладоши и подпишитесь. Спасибо за прочтение. Ваше здоровье!
Спасибо, что дочитали до конца. Пожалуйста, следите за автором и этой публикацией. Посетите Stackademic, чтобы узнать больше о том, как мы демократизируем бесплатное образование в области программирования во всем мире.