Порридж В Ко-ливинге
1 если ты гений
Yanis
Dzianis
Продолжайте) нашел картинку для вас
скоро будет долина отчаяния когда пару хардов подряд не удастся сделать)
Aleksandr
People in 2022 levels.fyi People in 2023 layoffs.fyi
Вахтёр
@chemist\_academician молчит и покидает чат
Viktor
Viktor
по мотивам недавник срачей в твитере
Viktor
простите, но что-то орнул, как говорят 😄
Порридж В Ко-ливинге
По факту же. Коды по бокам читаются проще 🤣 Почти всегда лучше написать по больше и по тупее, чем коротко и умно, но чтоб след разраб нихрена не понял
Ilia
код по бокам сократить только, убрать первое условие в каждом иф и идеально :D
Dzianis
Там ещё если код справа будет работать под нагрузкой в горячем месте то v8 сможет оптимизировать) а вот функции по центру фиг (если в nodejs это засунуть 😁)
Ilia
звучит прям как спинофф гарри поттера: Джаваскрипт и высоконагруженные системы :D
Alex-k
Друзья, как называется кусок системы который умеет работать с рейт лиметером? Допустим мне надо дергать API и я точно знаю что могу не чаще чем Х в секунду. Как называется такая фиговина в сис дизе?
Alex-k
обратный рейт лимитр?
Alex-k
звучит как client-side rate limiter
мне нужно на серваке и расредленно
Viktor
сервак у тебя в данном случае является клиентом АПИ?
Viktor
вот и получается client-side. но вообще название плохое. потому то сразу про UI думаешь
Viktor
ещё по описанию напомнило вот это https://www.youtube.com/watch?v=E9XkLxxlxNE
Viktor
кажется похоже на проблему, которую ты описываешь
Dzianis
мне нужно на серваке и расредленно
А ты очередь не хочешь сделать?) что-то in-memory и отдавать асинхронно
Порридж В Ко-ливинге
Я бы написал: public static string GetPercentageRounds (double percentage) { if (percentage < 0 || 1 < percentage) throw new Error("Wrong value"); const int filledRounds = min(floor(percentage * 10)); return string(filledRounds, '🔵') + string(10 - filledRounds, '⚪️'); }
Alex-k
throttling?
типа но кажется опять же слово не из сис дизайна
Alex-k
А ты очередь не хочешь сделать?) что-то in-memory и отдавать асинхронно
у меня уже есть там очередь, но эта очередь не умеет отдавать Х в несколько секунд. И у меня несколько инстансов дергают один и тот же API, они все должны соблюдать общий рейт на всех
Alex-k
запиши куда нибудь дату последнего успешно выполненного запроса?
редис, читай в редис пиши в редис. Мне в целом было интересно как такая штука называется
Dzianis
редис, читай в редис пиши в редис. Мне в целом было интересно как такая штука называется
Я тут писал сообщение с редисом, а чо если в него писать ${Id-пользователя-(таймпстемп % 5sec)} И если попал отдай, не попал ходи в апи
Alex-k
причем помому даже не плохо
Alex-k
но мне просто название проблемы нужно =)
Alex-k
Похоже правильные слова: Global Distributed Client Side Rate Limiting
Dzianis
Похоже правильные слова: Global Distributed Client Side Rate Limiting
Сказал бы что тебе тикет создать надо) а не решить его 😁
Alex-k
Решить тоже надо
Alex-k
Но я ща подумал ... Может отдельный сервер. Который будет в отличие от всего жить одним инстансом. Перед ним очередь , лейтенси не важно
Alex-k
Поднимется если че в другом месте
Alex-k
Ты балансер L3 изобретаешь?)
я ниже l7 никогда не был, поэтому не знаю. Что ты имеешь ввиду?
dexig
обманываешь, был
Alex-k
Viktor
но мне просто название проблемы нужно =)
Я понял, ты просто решаешь тебе квадратиком или ромбиком обозначить это на схеме, да? 🤣
Alex-k
желательно 2 раза
Viktor
Просто скажи that backendy thing, you know
Alex-k
чтобы все сразу сказали "наверное он cloud solution architect"
Alex-k
Просто скажи that backendy thing, you know
я так говорю обычно, все понимаю но эффект так себе
Alex-k
Я понял, ты просто решаешь тебе квадратиком или ромбиком обозначить это на схеме, да? 🤣
я посмотрел презу чела из гугла и понимаю какой может быть проблема, и это круто, но мне сразу захотелось что-то простое сделать
Вахтёр
Sanober Noorani молчит и покидает чат
K
Мне надо будет сделать систему уведомлений (условно, была совершена транзакция, подтвердите) на вебсайте (без смс/почты И так далее) - посоветуйте мб есть какая дельная книга (или глава) по этой теме.
K
а как подтвердить без смс и почты?
😃 через браузер экзстеншен) и через него же логин
Viktor
Мне надо будет сделать систему уведомлений (условно, была совершена транзакция, подтвердите) на вебсайте (без смс/почты И так далее) - посоветуйте мб есть какая дельная книга (или глава) по этой теме.
не очень ясно что такое транзакция и зачем ей нужно подтверджение. в случае с логином подтверждение через почту или смс это ещё и защита от спама. твой номер телефона или почта — это айдишник.
Dzianis
не очень ясно что такое транзакция и зачем ей нужно подтверджение. в случае с логином подтверждение через почту или смс это ещё и защита от спама. твой номер телефона или почта — это айдишник.
ну ты же можешь заполнять всякие насстройки пользователя и его корзину и тд, а когда он подтвердит почту все действия подтвердить и выполнить) можно на уровне базы данных это делать, а если не подтвердит откатить (в тч и покупки / склад и тд)
Viktor
систем-дизайн начался 😄
Alex-k
вообщем как я понял тз: есть магаз, делаешь заказ, экстеншен бибикает, человек подтверждает в экстеншене и потом бибикает клиент сайд и говорит "все ок, вот номер заказа, ждите"
K
Да, грубо говоря так, условно, я залогинился через публичный ключ, через экстеншен, мой публичный ключ он мой же логин, он мой же id. Теперь в приложении происходит всякая бизнес логика, которая периодически требует моего внимания (сообщения, аппрувы И так далее) Вот такую систему уведомлений и надо построить.
Viktor
звучит как message queue. куда с одной стороны влетают уведомления от пользователей разбитые по темам. с другой стороны их читают и решают что с этим делать.
K
Угу, вот, я потому тут и спросил, такая типичная задача на систем дизайн по сути. Хочу в целом разобраться какие есть варианты для себя. Может книги какие есть.
Viktor
Я вспомнил только Мишин видос https://www.youtube.com/watch?v=bBTPZ9NdSk8
Viktor
может кто-нибудь накидает ещё ссылок
Alex-k
Я бы книгу с кабанчиком взял, там есть глава про потоковую обработку. Это чуть более широкое, но базу должно заложить
Alex-k
Но если у тебя мелкий сайт, один инстанс и мало времени. Открыть вебсокет до клиента, замапить сокет к айди юзера. Когда что происходит кидать в веб сокет событие
Alex-k
или совсем просто, в базе делаешь таблицу нотификейшенс , кидаешь записи туда когда хочешь что-то показать юзеру, юзер забирает события с клиента каждые 30 секунд. Забранные удаляешь или помечаешь
Alex-k
но все это не оч скейлится
Alex-k
но зато возможно спасешь бюджет и проект
K
да, там проблема, что все это совсем не мелкое.
K
я думаю что по факту воткнут aws, какой-нить dynamodb (не факт и не могу пока аргументировать почему, просто как пример привел), но мне просто стало интересно в этом глубже разобраться, как оно вообще бывает
Serega
или совсем просто, в базе делаешь таблицу нотификейшенс , кидаешь записи туда когда хочешь что-то показать юзеру, юзер забирает события с клиента каждые 30 секунд. Забранные удаляешь или помечаешь
Можно совместить оба подхода клиент без вэбсокета, выгребает обновления каждые 30 секунд или сам может обновить, а операторам нужно иметь актуалтьный лист документов которые нужно процессить, тут сокетами разрулить документы между ними и оперативно этот список обновлять
Serega
https://yandex.ru/yaintern/algorithm-training
Egor Serikov
https://yandex.ru/yaintern/algorithm-training
как думаете, стоящие лекции для новичков у них?
Dzianis
как думаете, стоящие лекции для новичков у них?
Вы можете посмотреть, они доступны без регистрации и смс (базово кажется вполне ничего, понятно не сделает без практики из вас Гену Короткевича, но для овервью и ознакомления с базой отличные) https://www.youtube.com/watch?v=QLhqYNsPIVo&list=PL6Wui14DvQPySdPv5NUqV3i8sDbHkCKC5
Egor Serikov
Вот, спасибо, я как раз хотел услышать то что в комментах, потому что валидировать качество нужен достаточный уровень компетенций
Viktor