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 с различными GC и т. д., и в конце концов просто решили, что асинхронный Rust + Mimalloc работают значительно лучше на том же оборудовании с гораздо меньшими требованиями к памяти, так что переход был очевидным.
Rust оказался действительно отличным для сетевого кода, который использует общие кучи и блокировки. Однако он не защищен от проблем времени выполнения. Возможно, стоит упомянуть, что код, написанный LLM в Rust, довольно подвержен взаимным блокировкам, и обходным путем является проектирование систем как простых для понимания конечных автоматов, вместо просто куч асинхронного/ожидания.
Мастер FART
Каждое развертывание содержит своего собственного Мастера FART. Мастер отвечает за оркестрацию кронов, вебхуков и так далее.
Влияние на клиентов
Система FART находится в производстве уже около года. Мы только недавно провели миграцию на развертывание Активно-Активное. Есть некоторое влияние на чтение ваших собственных записей через регионы, которое описано в вышеупомянутом блоге и в документации.
FART работает тихо в фоновом режиме, хотя его присутствие всегда ощущается. Мы надеемся, что вы найдете наши системы быстрее для ваших случаев использования (в основном пользователи действия, которые приводят к изменениям в данных, будут быстрее в некоторых регионах).
Развертывания
Развертывание использует ту же глобальную оркестрационную систему, которую мы используем для развертывания самих сервисов. Документация FART рекомендует Sloperators никогда не доверять развертыванию, всегда проверять полезную нагрузку перед выпуском.
После развертывания FART оповещения следуют политике эскалации: сначала комната, затем этаж, затем здание.
В заключение
Говорят, что интернет — это серия труб, но на самом деле это серия звуковых сигналов.
Как и все основные релизы, мы рады, что могли уделить время оптимизации, тестированию и правильному выпуску этого изменения. Мы в восторге от того, что нас ждет впереди. FastComments должны лучше масштабироваться и иметь более высокую доступность в долгосрочной перспективе с этой работой. Как говорит рабочая книга FART: "Если вы чувствуете что-то, скажите что-то". Сообщите нам ниже, если вы обнаружите какие-либо проблемы.
