Веб-версіяВідкрити в Telegram
TTECH Interview UA

TECH Interview UA

@TechInterviewUA · група · Технології · в індексі з 2026-07-06
1 214учасників+14 за тиждень
1 396повідомлень в індексі
A
  1. A
    Андрюха, твої меседжі - золото!
    1. A
      Дякую, брозе. Треба буде діс записати на них, як в старі добрі😆😆😆
Уся гілка · 3 відповіді →
A
Мені здається хело інтервю це така +- супер дефолтна, початкова база, шоб хоч якось не мекаии на сісдізі. Щось серйозне там наврядчи окей шукати, як мені здається. Чи типу «докопатись до правди», як воно ріл працює - врядлі. Докопатись можна напевно або попрацювавши в тому бігтєсі(можливо мати друга, який там працював), який дизайниш, або самому ПОСіхами і бенчами завалідити (теж не 100%). Або піти на совбєс туда, де роблять таку систему і запитати моменти на інтервʼю в них же.
K
Посилання
натисніть — покажемо
> https://www.hellointerview.com/learn/system-design/problem-breakdowns/bitly Солюшн для генерації унікальног урла - унікальне число, каунтер - це хороший солюшн. Але для цього юзнули редіс, вот незадача, редіс норм не сторить данні, і там є дата лос, пупупу. МОжна включити fsync на кожний врайт, але тоді є проблемка, він вже не хендлить 10к+ в секунду, а максимум 1-2к. І солюшн вже не скейлабл. @andreyka26N не можу перестати думати про це лол. хіба стейтлесс редіс це біда? як міркую: - редіс піднявся, запросив у БДхи рендж цифр які вільні (умовно від 10к - 20к вільні), бд-ха позначила їх як зайняті, редіс почав їх роздавати. - редіс впав , куб його підняв, редіс запитав рендж вільний у бд, бд віддала вже 20к - 30к тобто редіс стейтлес залишатєься і використовується як розподілений брокер аби консьюмери бд-ху не довбили норм ?
  1. A
    Тоді зачєм в цілому редіс? Можна стейтлес подами вигрібати по 10 к і змеморі сторити зразу з реста. Ну і це ж дев ефорт, тайм ефорт, мані ефорт. + є проблема, шо це створює гепи. Тобто кожний такий провтик, навіть не те що ліг, там перезапустився чи ще щось, ти втрачаєш цей рендж, і більше ніколи його не вернеш. З каунтером такого не буде
    1. A
      Десь такий апроач робили в Єакзцизі кєнти в Україні. Але там дуже складно, бо там є експайр і треба вертати назад
Уся гілка · 3 відповіді →
A
Я не розумію, навіщо якийсь централізований Редіс, що роздає діапазони, якщо можна одразу назначити діапазон на кожну ноду, скажімо , шаг по 1 MiO, і нехай собі працюють автономно. Як закінчиться мільйон, то назначимо мільярд.
  1. A
    Ну лившжться проблема, шоб зберігати той рендж, і зробити ет мост ванс. Типу хто як буде назначати ренджі, і як вони будуть видаватись так, шоб ніколи не вийшло колізій. Ну ігепи лишаються. Чкшо давати це на рест сервіс стейтлес. Олин редеплой і все, досвідос
    1. K
      Фотографія
      натисніть — покажемо
      хм snowlake counter наче класна ідея але він курва довгий. тож ідея скоротити урлу не спрацьовує . я знайшов ось таку лабуду але вилгядає як діч бо а. рендж може закінчитись, б. машину може за-ре-асайнитись на ту саму айді
      1. A
        Ні, це я б сказав ідеальний варік, я би такий робив в сісдізі. Він даж і скейл і евейлабіліті одночасно, без реплікації. Ставиш стореджі, шардуєш. На кожний сіквенснамбер додаєш префікс як айдіха ноди. Вуаля.
        1. A
          Але це має бути не редіс, або якшо і редіс, то з fsync,, без реплікації. Сервіси раундробін роблять, і в цілому все. Там напевно треба буде єдине, це координатор, який запише перші префікси правильно, і шоб вони не провтикались, якийсь зукіп, ітсд. І можливо переасайнити, якшо спейс недопокритий: напр, пкрша цифра айді - це нода, і є тільки 5 нод(ще6,7,8,9) це намберс спейс, який вільний, його модна переасайнити
Уся гілка · 5 відповідей →
K
виглядає як щось, що можна POC-нути з клодом
A
Посилання
натисніть — покажемо
@andreyka26N Прочитав https://andreyka26.com/url-shortener-bitly-system-design-with-microsoft-engineer. Дякую, дізнався кілька нових понять. Кілька міркувань. 1. Скачав код. Дивився ScrambleId. Довго думав. Це тільки для того, щоб "подвинути" маленькі числа кудись подалі? Тобто маленькому числу ставиться у відповідність якесь велике. Чи що? 2. return 301 Redirect. Чому ні 302? Наскільки я розумію 301 буде кешируватися, а 302 не буде. 3. Since our number is at max 2 ^ 64. Взагалі то 2 ^ 63, тому що Only 63 bits are variable. Але все одно не влазе в 10 символів 4. Unfortunately, we cannot shrink it to 42 bits, as it is not enough for Snowflake ids. The maximum we can shrink to is 55 bits А чого? Гулять так гулять. 39 bits for milliseconds для machineid залитщаємо 4 біта, бо сказано Let’s say we know we will have no more than 16 shards Write traffic 3.4k rps = 3,4 rpms => 4 реквеста в ms => 2 біта разом 45 2^45 = 35 184 372 000 000 62^8 = 218 340 110 000 000 Якщо мої розрахунки вірні, то вистачає 8 символів 5. For Prefixed shards solution, we cannot afford data loss here Можливо. Але нащо нам тут взагалі реплікація? Упало. Тим часом працюють інші (їх же а ж до 16 shards). Піднялося. Працює далі. Чи наступна фраза "This is the rare case, when we can use shards as availability guarantees" саме про це?
A
1. Скрамбл - це щоб не можна було «вгадати» наступну айдіху. Псевдорандом 2. Так ніби ж 301 це персанент, а 302 це темпорарі? 3.чому тільки 63? Ансайнд лонг тримає 64 норм ніби. 4. 39 бітів дасть 17 років (а в реквах 20) вроді якшо брати таймстемп мілісекундний. За 4 біта на шард - та цитатка з чаптера за префікси, як приклад, не як реді прокалюкольована кількість інфри. Я думаю краще забити більше ніж 4 біта, як мінімум я би брав 6 на потенційальний скейл, евейлабіліті, деплойменти, і т.д. Write traffic 3.4k rps - а спайки? Я би не планував чисто хепі пас на такі речі якшо чесно. Мінімум 4-6 біта. Ітого, якшо навіть так сильно ужатись= 40 + 6 + 6 = 52. Погоджуюсь, шо можна менше, але не сильно (оригінально я дав 55 на виріст😁) 5. "This is the rare case, when we can use shards as availability guarantees" = саме так, типу, що нам не треба евейлабілііті, бо шарди працюють схоим чином як репліки стейтлес сервіса: ми ходимо в любий
  1. A
    2. Так ніби ж 301 це персанент, а 302 це темпорарі? Ну так. Я не можу придумати, який був би краще. Єдине, що як би зробити re-use expired ключів, то 302, бо не кешується на клієнті 3.чому тільки 63? Ансайнд лонг тримає 64 норм ніби. це з Wiki про snow flake id: The highest-order bit is always 0. Only 63 bits are variable. 4. а спайки? Thread.Spleep(1) і взагалі не треба тих Sequence Number бітів )))
    1. A
      2. Ну депендс шо краще трейдоф. 3. Я знаю, і це через знак і інтероперабіліті між мовами і системами. В нас все своє - тому пофіг, будем 64 робити. 4.ахахаха тоже діпендс від мови. В більшості це не спрацює
Уся гілка · 2 відповіді →

Відкрита публічна стрічка з пошукового індексу ChatCrawler — «Google по публічному Telegram»; оновлюється в міру обходу майданчика. Час — UTC.

Лише публічний контент, офіційний API Telegram. Про проєкт · Питання · Чого ми не робимо · Прибрати сторінку з видачі · Каталог · Пошук · Як ми рахуємо