Wed Apr 01 2026
...
Автоматическая транспортная система маршрутизации FastComments
Введение
Автоматическая транспортная система маршрутизации FastComments (FARTS) является нашим транспортным и сервисным уровнем. FARTs помогают с перегрузкой, маршрутизируя трафик на основе местоположения пользователя и потенциальной нагрузки в будущем. Она состоит из нескольких различных систем: геоосведомленный DNS-уровень, прокси для БД, репликация БД, управление SSL-сертификатами, обратный прокси и CDN, который использует LRU-кэш на диске для кэширования ресурсов на границе. Система поддерживает как тихие, так и громкие режимы переключения на резервный сервер. Предпочтителен тихий режим в производстве.
Активный-Активный
Последняя версия FART содержит встроенный прокси и уровень репликации для нашей базы данных. Это позволяет FastComments работать в режиме Активный-Активный с глобальной доступностью на запись, что делает наши FARTS в конечном итоге согласованными. Больше деталей здесь.
Одним из подходов, который мы действительно использовали в самом начале, было попытаться создать форк MongoDB. Один из наших инженеров (Sloperators) смог это сделать с Opus 4.6, однако мы решили, что риск этого подхода выше, чем создание нашей собственной изолированной системы.
Последнее, чего бы вы хотели с чем-то вроде FART, это знать, что оно пришло, но вы не можете отследить источник. Мы добавили мониторинг и диагностику для контроля активной-активной репликации на детальном уровне.
Rust в масштабах
Частью мотивации создания FART было замещение некоторых существующих сервисов, написанных на Java. После небольшой паузы мы решили объединить их в один сервис на Rust, чтобы снизить накладные расходы на выполнение. Это было приемлемым компромиссом, поскольку мы не часто развертываем FART. FART компилируется с LTO, так что мы можем действительно вытянуть максимум.
Мы потратили много времени, пытаясь настроить старую систему на Java с различными GCs и т.д., и в конце концов просто решили, что асинхронный Rust + Mimalloc работает значительно лучше на том же оборудовании с гораздо меньшими требованиями к памяти, поэтому переход был очевидным решением.
FART Master
Каждое развертывание содержит свой собственный FART Master. Мастер отвечает за оркестрацию кронов, вебхуков и т.д.
Влияние на клиентов
Система FART находится в эксплуатации уже около года. Только недавно мы провели миграцию на развертывание Активный-Активный. Новая система предоставляет нам больше визуализации задержек по всей системе, а также уменьшает время на обслуживание, так что теперь мы можем тратить больше времени на новые функции.
FART работает тихо в фоновом режиме, хотя его присутствие всегда ощущается. Мы надеемся, что наши системы быстрее для ваших случаев использования (в основном действия пользователей, которые приводят к изменениям в данных, будут быстрее в некоторых регионах).
Развертывания
Развертывание использует ту же глобальную систему оркестрации, которую мы используем для развертывания самих сервисов. Документация FARTS рекомендует sloperators никогда не доверять развертыванию, всегда проверять нагрузку перед выпуском.
После развертывания FART-оповещения следуют политике эскалации: сначала комната, затем этаж, затем здание.
В заключение
Как и все основные релизы, мы рады, что смогли уделить время оптимизации, тестированию и правильному выпуску этого изменения. Мы в восторге от того, что нас ждет впереди. FastComments должен масштабироваться лучше и иметь лучшую доступность в долгосрочной перспективе с этой работой. Как говорит справочник FART: "Если вы что-то чувствуете, скажите что-то". Дайте нам знать ниже, если вы обнаружите какие-либо проблемы.
