FastComments.com Blog


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 с различными сборщиками мусора и т.д., и в конце концов просто решили, что асинхронный Rust + Mimalloc работает значительно лучше на том же оборудовании с гораздо меньшими требованиями к памяти, так что переход был очевидным.

Основной FART

Каждое развертывание содержит свой собственный FART Master. Мастер отвечает за организацию cron-задач, вебхуков и т.д.

Влияние на клиентов

Система FART находится в производственной эксплуатации уже около года. Только недавно мы осуществили миграцию на активное-активное развертывание. Новая система предоставляет нам больше возможностей для отслеживания задержек по всей системе, а также снижает нагрузку на обслуживание, чтобы мы могли уделять больше времени функциям.

FART работает тихо в фоновом режиме, хотя его присутствие всегда ощущается. Мы надеемся, что вы заметите, что наши системы работают быстрее для ваших случаев использования (в основном действия пользователей, которые приводят к изменениям в данных, будут быстрее в некоторых регионах).

Развертывания

Развертывание использует ту же глобальную систему оркестрации, которую мы используем для развертывания самих служб. Документация по FARTS рекомендует sloperators никогда не доверять развертыванию, всегда проверять полезную нагрузку перед выпуском.

После развертывания оповещения FART следуют политике эскалации: сначала комната, затем этаж, затем здание.

В заключение

Как и все крупные релизы, мы рады, что могли уделить время для оптимизации, тестирования и правильного выпуска этого изменения. Мы в восторге от того, что нас ждет впереди. FastComments должен лучше масштабироваться и иметь более высокую доступность в долгосрочной перспективе благодаря этой работе. Как говорит рабочая документация FART: "Если вы что-то чувствуете, скажите об этом". Дайте нам знать ниже, если вы обнаружите какие-либо проблемы.