Jan 1, 0001

Flightradar

В день совершается 120 тысяч авиаперелётов. примерно 15 тысяч могут находиться одновременно в небе. Каждый из них примерно раз в секунду передаёт блок информации о себе (примерно 1 килобайт).

По всему миру расставлено примерно 20 тысяч приёмников этих сигналов, которые затем передаются в систему, где обрабатываются и показываются пользователям.

Пользователей несколько миллионов в день, некоторые из них следят за конкретным самолётом, но большинство - в целом за картинкой региона.

Во время кризисов количество наблюдающих за самолётом может увеличиваться на порядок.

Требования

Входы

  • какая информация содержится в этом килобайте данных? Можно ли что-то отрезать?

    ничего нельзя обрезать

  • как устроены приёмники сигналов? Можем ли мы встроить туда что-то своё?

    не можем, просто шлют нам информацию

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

  • среднее / максимальное число самолётов на какую-то единицу площади

    хотим выдерживать все 15к

  • что мы можем хранить локально? Как быстро протухнут такие данные?

    • расписание

    • регулярные рейсы

    • популярные направления

      Это можно делать, но не сильно интересно

  • средняя / максимальная длительность полёта

Выходы

  • должны ли мы хранить и предоставлять доступ к истории?

    да, историей пользуются нечасто

  • средняя площадь, за которой следит пользователь

    не так важно

  • должны ли мы отображать точно геолокация самолета? Достаточно ли время вылета + (ожидаемое) время прилета? (И на карте соединять прямой)

    должны точно, с маленькой задержкой

  • какая допустимая задержка между пингой от самолёта и получением информации пользователем?

  • какое максимальное количество пользователей может смотреть за одним самолётом / за одним регионом?

    10кк

  • что должен выводить сайт в случае, когда самолёт длительное время не выходит на связь (убираем из рассмотрения/оставляем старое расположение/…)

    зависаем

Оценочки

Приём сигнала

  • 20к трансмиттеров
  • самолётов $\leq$ трансмиттеров. Будем считать, что максимум 20к
  • примерно 30% самолётов в густой зоне трансмиттеров, от каждого прилетает не 1, а 4 сигнала.
    • $20k \cdot (0.3 \cdot 4 + 0.7 \cdot 1) \approx 40k$ сигналов в секунду
  • каждую секунду получаем 40 мб данных
    • в час 144 гб
    • в день 3.5 тб

Нужна дедубликация

Хранение

  • 150к перелётов
  • average-flight-duration.png
  • среднее время полёта - 2 часа
  • $150к \cdot 60 \cdot 60 \cdot 2 \approx 1TB$

Нужно уменьшать количество хранимых данных

Отдаём пользователям

  • 10 млн $\rightarrow$ активных 3 млн
  • каждый раз в секунду получает информацию о карте (сколько весит пакет данных?)