Алексей Рагозин - Spring REST-гигантомания: особенности работы с мультигигабайтными POST-запросами
ฝัง
- เผยแพร่เมื่อ 8 ก.ย. 2024
- Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/Ypf1HW
- -
Скачать презентацию с сайта JPoint - jrg.su/m4c7EV
Теоретически HTTP-запросы не имеют ограничений на размер. Разумеется, мы предполагаем «разумные» размеры, но что, если ваш коллега-data scientist считает датасет в 10 гигабайтов разумным размером? Можно спорить, разумно или нет отправлять 10 Гб одним POST-запросом, но может получиться так, что время споров уже позади, а результат необходим вчера.
В докладе речь идет о реализации потоковой обработки данных в условиях ограниченной памяти и неограниченного размера запроса на фреймворке Spring. Разбираем 4 кейса: отправка данных по HTTP, получение данных по HTTP, запись в PostgreSQL, чтение из PostgreSQL.
Даже если вы думаете, что POST-запрос на 10 гигабайтов - это плохая идея, техники потоковой обработки данных заслуживают право на существование. Потоковая обработка может обеспечить более эффективное использование ресурсов и «защиту от дурака» и в менее спорных архитектурных решениях.
Для локалки годится. Для публичного API решение подвержено slowloris атаке. Лью файл по байтику в секунду, в итоге коннекшн к бд держится. Точно также ответ не читать или читать по байтику. Более того, если клиент обрывает коннекшн без закрытия, вся конструкция на отправку может висеть неограниченное время.
Как это в postgres нет undo лога?! Там очень даже он есть в виде write ahead log и это создает серьезные проблемы с большими blob. Конечно его можно отключить настройками со всеми вытекающими.
То есть 10гб сохраняли в постгрес, не в файловое хранилище? И всё было нормально с этим?
интересно а как такие файлы экспортировать? показали метод импорта файла, который клиент сам как-то разбил на части (рад был фронтендер наверно).
а как экспортировать 10гб, например, в excel, чтобы не свалиться в out of memory?
REST на 10 Г, выбор техстека огонь!
А что не так?
А где можно на код взглянуть?
Чел рассказал о том как ему прилетела таска запилить костыль и он его запил. Зачем кому-то это нужно хрен знает. Зачем доклад хрен знает.
Странно, но это уже не первый доклад за последние время о том как кто-то делал какое-то ненужное извращение
пф...