FastComments.com Blog

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: "Если вы что-то почувствовали, сообщите об этом". Дайте нам знать ниже, если вы обнаружите какие-либо проблемы.