Size: a a a

Node.js — русскоговорящее сообщество

2021 February 18

YI

Yaroslav Ivanov in Node.js — русскоговорящее сообщество
Alexandr 🏌️‍♂️ Solomin
мы и так были лично знакомы, но если тебе нужны деньги я  думаю тут кто-нибудь поможет
Что-то не спешит твой друг с ответом
источник

AB

Andrew Bodryi in Node.js — русскоговорящее сообщество
Всем привет! Делаю запрос через fetch, в ответ 407. Как в fetch отключить проверку на прокси? Ребята из .net говорят что они это в два счета делают и у них нормально запросы идут, но у меня нет
источник

T

Tadeush in Node.js — русскоговорящее сообщество
Кто с sed|awk дружит?
источник

П

Павел in Node.js — русскоговорящее сообщество
Tadeush
Кто с sed|awk дружит?
Какая задача?
источник

T

Tadeush in Node.js — русскоговорящее сообщество
Нужно взять строку из одного файла, найти ее в другом файле и добавить сверху еще одну строку )
источник

T

Tadeush in Node.js — русскоговорящее сообщество
читал строки через while read LINE, далее натравливал sed, но, видимо, не матчится что-то
источник

Р

Роб in Node.js — русскоговорящее сообщество
Tadeush
Нужно взять строку из одного файла, найти ее в другом файле и добавить сверху еще одну строку )
https://t.me/grouplinux
Тут вероятнее помогут.
источник

КП

Кудяков Петр... in Node.js — русскоговорящее сообщество
Всем привет кто-нибудь реализовывал highload загрузку на сервер? Например, мне надо загружать десятки видео по часу-полтора. Какие протоколы лучше использовать, пойдёт ли обычный form-data?
источник

S🛸

Sergey 🛸 in Node.js — русскоговорящее сообщество
Кудяков Петр
Всем привет кто-нибудь реализовывал highload загрузку на сервер? Например, мне надо загружать десятки видео по часу-полтора. Какие протоколы лучше использовать, пойдёт ли обычный form-data?
Пойдет
источник

y

ymdev in Node.js — русскоговорящее сообщество
Кудяков Петр
Всем привет кто-нибудь реализовывал highload загрузку на сервер? Например, мне надо загружать десятки видео по часу-полтора. Какие протоколы лучше использовать, пойдёт ли обычный form-data?
Ну, тут выбор небольшой. Отправляешь видео частями в multipart/form-data, парсишь на сервере также частями с помощью multer/busboy/formidable/... и записываешь частями на диск. Стримы твои друзья.

Таким образом можно грузить параллельно несколько видосов и сервер будет чувствовать себя спокойно.

А вот если тебе нужно при загрузке еще и сжимать видео, то тут надо думать, каким боком ffmpeg внедрять.
источник

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
Ребят, такая проблемка есть.
Допустим есть роуты которые зависят от значения в базе
что имею ввиду:

const store = new Store(); // какое-то хранилище, не важно это redis или бд, т.к. будет запрос к нему, то это уйдет в фон (запрос к диску если это бд, запрос к redis-у и тд)
if (!(await store.get(key))) {
 await store[key] = value;
}
если будет 2 параллельных запроса, то возможна ситуация что в store запишется сначала одно значение потом перетрется другим, это конечно не страшно, но представим другой случай:

const order = await store.findOne({ where: { key }});
if (!order) {
 await store.create({}); // создаем новый заказ
}
если будет 2 параллельных запроса, то возможна ситуация что в теперь в store будет 2 заказа

есть вариант использовать https://www.npmjs.com/package/async-lock, но возникает одно но - у меня несколько нод, т.е. по сути надо это вытянуть в отдельный worker. И тут возникает вопрос, т.к. будет много "зафриженных до определенного момента" запросов, будут ли какие-то подводные камни? (просадки по памяти, возможности отваливания чего-то)

Есть ли какие стандартные решения этой проблемы, когда используется несколько нод и они все перед nginx (действует как балансер тут) ?
источник

y

ymdev in Node.js — русскоговорящее сообщество
monokai vasiliev
Ребят, такая проблемка есть.
Допустим есть роуты которые зависят от значения в базе
что имею ввиду:

const store = new Store(); // какое-то хранилище, не важно это redis или бд, т.к. будет запрос к нему, то это уйдет в фон (запрос к диску если это бд, запрос к redis-у и тд)
if (!(await store.get(key))) {
 await store[key] = value;
}
если будет 2 параллельных запроса, то возможна ситуация что в store запишется сначала одно значение потом перетрется другим, это конечно не страшно, но представим другой случай:

const order = await store.findOne({ where: { key }});
if (!order) {
 await store.create({}); // создаем новый заказ
}
если будет 2 параллельных запроса, то возможна ситуация что в теперь в store будет 2 заказа

есть вариант использовать https://www.npmjs.com/package/async-lock, но возникает одно но - у меня несколько нод, т.е. по сути надо это вытянуть в отдельный worker. И тут возникает вопрос, т.к. будет много "зафриженных до определенного момента" запросов, будут ли какие-то подводные камни? (просадки по памяти, возможности отваливания чего-то)

Есть ли какие стандартные решения этой проблемы, когда используется несколько нод и они все перед nginx (действует как балансер тут) ?
Вот прям в лоб есть решение - транзакции у бд. Сама база данных лочится, пока ты не закончишь запрос (в твоем случае проверка на существование записи и ее создание). Тебе не нужно будет на уровне ноды городить блокировку
источник

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
ymdev
Вот прям в лоб есть решение - транзакции у бд. Сама база данных лочится, пока ты не закончишь запрос (в твоем случае проверка на существование записи и ее создание). Тебе не нужно будет на уровне ноды городить блокировку
была идея так сделать и ловить спец. код у postgresql при выкидывании им как раз блокировки, но думал еще варианты есть какие-то. т.к. тут еще может быть другое хранилище. тот же redis
источник

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
а так бы была универсальная вещь, которая работала бы до "лазания в стор (не важно какой он)"
источник

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
ymdev
Вот прям в лоб есть решение - транзакции у бд. Сама база данных лочится, пока ты не закончишь запрос (в твоем случае проверка на существование записи и ее создание). Тебе не нужно будет на уровне ноды городить блокировку
т.е. по сути стояла миддлваря, которая бы лочила паралелльные запросы от определьного пользователя ${req.connection.removeAddress}_${req.path}
источник

y

ymdev in Node.js — русскоговорящее сообщество
monokai vasiliev
была идея так сделать и ловить спец. код у postgresql при выкидывании им как раз блокировки, но думал еще варианты есть какие-то. т.к. тут еще может быть другое хранилище. тот же redis
ну вообще у редис они тоже есть, если не ошибаюсь. Там что-то типо MULTI ... EXEC
источник

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
и пока не закончится один проход, второй бы ждал
источник

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
ymdev
ну вообще у редис они тоже есть, если не ошибаюсь. Там что-то типо MULTI ... EXEC
за наводку спасибо. но все таки можешь указать почему async-lock в данном случае - это плохо?
источник

PV

Peter V in Node.js — русскоговорящее сообщество
ymdev
ну вообще у редис они тоже есть, если не ошибаюсь. Там что-то типо MULTI ... EXEC
+ редис тоже умеет транзакции
источник

y

ymdev in Node.js — русскоговорящее сообщество
monokai vasiliev
за наводку спасибо. но все таки можешь указать почему async-lock в данном случае - это плохо?
Я не использовал эту штуку, но пытаться на уровне нескольких нод синхронизировать работу - ну такое.
источник