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