Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 April 02

MM

Maxim Manylov in NodeUA - JavaScript and Node.js in Ukraine
Да я начал смотреть все подряд и успокоился ) все интересно
источник

M

Maxim in NodeUA - JavaScript and Node.js in Ukraine
А где-то есть лекция, или информация по sticky sessions, про которые говорит Тимур, что благодаря им можно делать stateful сервис
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Maxim
А где-то есть лекция, или информация по sticky sessions, про которые говорит Тимур, что благодаря им можно делать stateful сервис
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Но лучше просто websockets
источник
2021 April 03

/

// JD in NodeUA - JavaScript and Node.js in Ukraine
Anna Alimova 👩‍💻
Вспомнился стартап Spill, где решили платить всем одинаковые зарплаты. Вначале было прикольно, а потом пришлось отказаться от такой практики.
О! Почитаю )
источник

M

Maxim in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
Но лучше просто websockets
Спасибо)
источник

KH

Kirill Hmelnitski in NodeUA - JavaScript and Node.js in Ukraine
Leon
Я понимаю, что в принципе, простейший алгоритм, но как то лучше сначала узнать кто чего пробовал. Потому что нагрузочные тесты нагрузочными тестами, но, вдруг какая-то бяка вылезет откуда не ждали.
Я использую https://github.com/T-PWK/flake-idgen. Тут ещё есть статья его про это https://blog.abelotech.com/posts/generate-unique-identifier-nodejs-javascript/. Из подводных камней это синхронизация времени, там об этом написано. Если время засинхронится назад, то могут пойти дубли. Ну и надо пристально следить, чтобы при масштабировании в какой-то момент времени не работали одновременно приложения с одним worker id.
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Kirill Hmelnitski
Я использую https://github.com/T-PWK/flake-idgen. Тут ещё есть статья его про это https://blog.abelotech.com/posts/generate-unique-identifier-nodejs-javascript/. Из подводных камней это синхронизация времени, там об этом написано. Если время засинхронится назад, то могут пойти дубли. Ну и надо пристально следить, чтобы при масштабировании в какой-то момент времени не работали одновременно приложения с одним worker id.
Большое спасибо, посмотрю.
Тимур абсолютно прав в том, что надо или разбираться с исходниками или делать всё самому, чтобы быть уверенным в результатах.
Но, чёрт, это же надо внешний диск к голове и несколько лет к жизни докупать, если много областей сразу.
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Yevhen
Остаётся только написать самому)
Не будете ли вы столь любезны объяснить смысл побитового сдвига влево в их алгоритме?
result := (now_millis - our_epoch) << 23;
result := result | (shard_id <<10);
А то я сварщик ненастоящий и в меряться глубиной фундаментальных познаний в этой области заранее сдаюсь.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Leon
Не будете ли вы столь любезны объяснить смысл побитового сдвига влево в их алгоритме?
result := (now_millis - our_epoch) << 23;
result := result | (shard_id <<10);
А то я сварщик ненастоящий и в меряться глубиной фундаментальных познаний в этой области заранее сдаюсь.
Я их алгоритм ни разу не видел)
Можете скинуть ссылку на строку на GitHub?
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Yevhen
Я их алгоритм ни разу не видел)
Можете скинуть ссылку на строку на GitHub?
источник

KH

Kirill Hmelnitski in NodeUA - JavaScript and Node.js in Ukraine
Kirill Hmelnitski
Я использую https://github.com/T-PWK/flake-idgen. Тут ещё есть статья его про это https://blog.abelotech.com/posts/generate-unique-identifier-nodejs-javascript/. Из подводных камней это синхронизация времени, там об этом написано. Если время засинхронится назад, то могут пойти дубли. Ну и надо пристально следить, чтобы при масштабировании в какой-то момент времени не работали одновременно приложения с одним worker id.
проблема синхронизации времени там решена, а то прозвучало неоднозначно ). Имелось ввиду подводные камни, если самому делать.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Leon
Не будете ли вы столь любезны объяснить смысл побитового сдвига влево в их алгоритме?
result := (now_millis - our_epoch) << 23;
result := result | (shard_id <<10);
А то я сварщик ненастоящий и в меряться глубиной фундаментальных познаний в этой области заранее сдаюсь.
Они так заполняют биты ID, который будет сгенерирован. В тексте все объясняется. Например
(now_millis - our_epoch) << 23
Положит timestamp в первые 41 бит слева
Дальше
result | (shard_id <<10)
положит в следующие 13 бит shard id
А вконце 10 бит автоинкрементируемого числа по модулю 1024
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Если интересно, почему автоинкремент по модулю 1024, там это тоже написано. Чтобы влез в 10 бит
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Попробуйте взять числа из их примера в статье и выполнить все вручную шаг за шагом. Должно стать понятнее
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Yevhen
Попробуйте взять числа из их примера в статье и выполнить все вручную шаг за шагом. Должно стать понятнее
Пробовал, пока что-то не то получается. Спасибо, буду разбираться, вы уже меня натолкнули в правильную сторону подумать.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Они берут 64 бита со всеми нулями, для каждой части id сдвигают ее на нужное количество бит, чтобы справа оказались нули. Потом делают побитовое ИЛИ с теми 64 битами вначале.
Сдвиг делается не для тех 64 бит, которые вконце будут отдаваться, а для частей id, вроде time stamp и shard id. Потом каждая из этих частей (уже сдвинутая) добавляется в оригинальные 64 бит с помощью ИЛИ
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Leon
Пробовал, пока что-то не то получается. Спасибо, буду разбираться, вы уже меня натолкнули в правильную сторону подумать.
Попробуйте подвигать биты на бумаге. Это проще объяснять визуально, чем на словах
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Leon
Пробовал, пока что-то не то получается. Спасибо, буду разбираться, вы уже меня натолкнули в правильную сторону подумать.
Если не разберетесь, пишите, попробую позже нарисовать)
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Yevhen
Если не разберетесь, пишите, попробую позже нарисовать)
Спасибо, уже копаю :)
источник