TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Максим Карась | Golang ментор

30 Sep, 17:05

Открыть в Telegram Поделиться Пожаловаться

Косячу на собесе в Т-Банк и получаю 450к

Продолжаю рассказывать про свои самые сложные собесы, первая часть - здесь, вторая - тут

Мне дали спроектировать систему наблюдения за курьерами. По базе координаты, карта, история перемещений. Казалось бы, че там сложного

Что нужно было сделать:

→ 100к человек одновременно на линии
→ Новая координата каждые 30 секунд
→ Текущая позиция на карте и история маршрута
→ Восстановление данных после пропажи связи


Сначала разобрал основные сценарии: нужно показать, где курьер находится прямо сейчас, показать его маршрут за день и не потерять координаты, если связь отвалится

А дальше я залип на том, как отправлять отдельные запросы, куда писать, откуда читать. Начал выдрачивать детали, хотя общую схему еще не собрал

В какой-то момент интервьюер уже несколько раз начал возвращать меня к одному вопросу:

Как обновление конкретного курьера вообще попадет именно к тем операторам, которые сейчас смотрят нужный участок карты?


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

А дальше сам себе устроил еще один прикол с нагрузкой 🤔

С какого-то хуя начал учитывать длину смены и получил 2 обновления в секунду, хотя тут все просто: 100к курьеров / 30 секунд = 3,3к обновлений в секунду

Потом выяснилось, что я не определил источник истины для координат. Обработчик писал и в кафке, и в редисе, из-за чего система могла жить в двух реальностях

Под конец накосячил с миграцией старых маршрутов: предложил переносить данные из основной базы частями и сразу удалять

В работающей системе так легко можно получить пропуски и рассинхрон

Зато нормально разобрал восстановление после потери связи: координаты храним на телефоне, а после восстановления сети отправляем пачку со временем и порядковым номером

К вопросу интервьюера про операторов тоже вернулись:

Пришли к географическим клеткам, оператору нахуй не нужны все 100к курьеров, а только те, что попадают в его участок карты


Если бы проходил этот собес сейчас, сначала описал бы само обновление: какой курьер, какие координаты, время, номер. Потом показал бы весь путь этих данных до оператора

И уже под эту схему выбирал бы технологии: кафка хранит поток обновлений, редис держит быструю копию последней позиции

Но даже так, оффер на сеньора и 450к на руки был получен

4.2k 0 55 14 77
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot