Size: a a a

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

2021 February 18

PV

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

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
Peter V
если ты никогда не планируешь масштабироваться, то можешь изобретать транзакции заново
в случае postgresql - Serializable Isolation Level?
источник

PV

Peter V in Node.js — русскоговорящее сообщество
monokai vasiliev
в случае postgresql - Serializable Isolation Level?
ну если тебе нужен такой уровень изоляции то он
источник

B

Bogdan in Node.js — русскоговорящее сообщество
Всем привет! Подскажите пожалуйста, у меня есть RESTApi, где у всех юзеров есть уникальный x-api-key, по нему они могут обращаться к моим эндпоинтам и получать информацию
Я хочу дать возможность сторонним сервисным приложениям получать доступ к аккаунту пользователя и ходить по апи и получать его данные(oAuth)

Сам вопрос, могу ли я интегрировать oAuth в свою систему, без полного её переписывания? Или мне нужно переписывать все методы регистрации/авторизации и вообще теперь не использовать x-api-key, а токен от oAuth?
источник

N

Nikita in Node.js — русскоговорящее сообщество
Bogdan
Всем привет! Подскажите пожалуйста, у меня есть RESTApi, где у всех юзеров есть уникальный x-api-key, по нему они могут обращаться к моим эндпоинтам и получать информацию
Я хочу дать возможность сторонним сервисным приложениям получать доступ к аккаунту пользователя и ходить по апи и получать его данные(oAuth)

Сам вопрос, могу ли я интегрировать oAuth в свою систему, без полного её переписывания? Или мне нужно переписывать все методы регистрации/авторизации и вообще теперь не использовать x-api-key, а токен от oAuth?
а под юзерами имеешь ввиду обычных пользователей или как?
источник

B

Bogdan in Node.js — русскоговорящее сообщество
Nikita
а под юзерами имеешь ввиду обычных пользователей или как?
Да, обычные пользователи
источник

N

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

N

Nikita in Node.js — русскоговорящее сообщество
Bogdan
Всем привет! Подскажите пожалуйста, у меня есть RESTApi, где у всех юзеров есть уникальный x-api-key, по нему они могут обращаться к моим эндпоинтам и получать информацию
Я хочу дать возможность сторонним сервисным приложениям получать доступ к аккаунту пользователя и ходить по апи и получать его данные(oAuth)

Сам вопрос, могу ли я интегрировать oAuth в свою систему, без полного её переписывания? Или мне нужно переписывать все методы регистрации/авторизации и вообще теперь не использовать x-api-key, а токен от oAuth?
просто дописываешь отдельные эндопинты для oauth флова
источник

N

Nikita in Node.js — русскоговорящее сообщество
а в мидлваре/guardе авторизации проверяешь каким способом идет авторизация, или по x-api-key, или по oauth
источник

PS

Pavel Shakhov (pongo... 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 (действует как балансер тут) ?
redis-semaphore и аналоги
источник

N

Nikita in Node.js — русскоговорящее сообщество
хотя я замечаю тренд для сторонних интеграций делать отдельный API
источник

N

Nikita in Node.js — русскоговорящее сообщество
который отличается от внутреннего
источник

B

Bogdan in Node.js — русскоговорящее сообщество
Nikita
который отличается от внутреннего
Есть статьи на эту тему?
источник

B

Bogdan in Node.js — русскоговорящее сообщество
Просто такое ощущение, что oAuth мертвый какой-то
источник

mv

monokai vasiliev in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
redis-semaphore и аналоги
благодарю
источник

B

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

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Bogdan
Либ для создания провайдера мало, все они старые
Гайдов так вообще не найти адекватных
ну так протокол не меняется, либы протестированы, багов нет
источник

СП

Сергей Пограничный... in Node.js — русскоговорящее сообщество
Adv0cat
Тут есть несколько вариантов, например можно не rest, а websocket соединение поднять, тогда вы привяжите юзера к одному инстансу и не будете париться)) Еще вариант иметь стейт выполнения запросов в общей бд, т.е. добавляться стейты будут вразнобой, а вот выполнятся будут ровно по порядку))
P.s. вы там очередь захотели сделать, но очередь вам поможет разве что просто соединить события от юзера для разных серверов, но ведь в очередь могут прилететь не последовательно и тогда как эту очередь разруливать?) Проще уже тогда в базе стейт сделать, там хоть есть возможность в разной последовательности выполнить))
Интересны детали, ws сам файловый дескриптор(сокет) держит открытым, а тот же http 1.1 на каждый реквест их открывает закрывает?
источник

B

Bogdan in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
ну так протокол не меняется, либы протестированы, багов нет
Думаю да, ты  прав
источник

AF

Andrew Fedak in Node.js — русскоговорящее сообщество
Привет. Можно как-то с помощью fs модуля создать файл ms access? Просто appendFile с названием не канает (после открытия выбивает такое окно)
источник