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