FastComments.com Blog

Wed Apr 01 2026
...

Автоматизована система транспортування маршрутизації FastComments

Вступ

Автоматизована система транспортування маршрутизації FastComments (FARTS) є нашим транспортним і сервісним шаром. FARTS допомагають з заторами, маршрутизуючи трафік на основі місцезнаходження користувача і потенційно навантаження в майбутньому. Вона складається з кількох різних систем, гео-усвідомленого шару DNS, проксі для БД, реплікації БД, управління SSL сертифікатами, зворотного проксі та CDN, який використовує LRU кеш на диску для кешування активів на краю.

Active-Active

Остання версія FART має вбудований проксі та шар реплікації для нашої бази даних. Це дозволяє FastComments бути Active-Active з глобальною можливістю запису, що забезпечує в кінцевому підсумку узгодженість наших FARTS. Більше деталей тут.

Підхід, який ми насправді взяли на ранніх етапах, полягав у з'ясуванні, чи можемо ми створити активну-активну вилку MongoDB. Один з наших інженерів (Sloperators) зміг це досягти з Opus 4.6, проте ми вирішили, що ризик зробити це вищий, ніж побудувати власну ізольовану систему.

Rust на великій масштабі

Частиною мотивації для створення FART було заміщення деяких існуючих сервісів, написаних на Java. Після деякого часу обмірковування, ми вирішили консолідувати їх в один сервіс на Rust, щоб зменшити накладні витрати при виконанні. Це був прийнятний компроміс, оскільки ми не розгортаємо FART часто. FART компілюється з LTO, тому ми можемо дійсно запрограмувати його на повну.

Ми витратили багато часу на налаштування старої системи на Java з різними GC тощо, і врешті-решт вирішили, що асинхронний Rust + Mimalloc працювали значно краще на тому ж апаратному забезпеченні з набагато нижчими вимогами до пам'яті, тому перехід був очевидним рішенням.

Rust виявився дійсно чудовим для коду, пов'язаного з мережею, який використовує спільні купи пам'яті та блокуваня. Проте, він не є непроникним для проблем під час виконання. Можливо, варто зазначити, що код, написаний LLM в Rust, досить схильний до дедлоків, і одним із способів уникнення цього є проектування систем як легких для розуміння автоматів стану, замість просто куп асинхронного/очікування.

Майстер FART

Кожне розгорнення містить свій власний Майстер FART. Майстер відповідальний за організацію кронів, вебхуків та іншого.

Вплив на клієнтів

Система FART працює в продакшині вже приблизно рік. Лише нещодавно ми здійснили міграцію на Active-Active розгортання. Є певний вплив на читання своїх власних записів через регіони, про що згадується у вищезазначеній статті в блозі та в документації.

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

Розгортання

Розгортання використовує ту ж глобальну систему оркестрації, яку ми використовуємо для розгортання самих сервісів. Документація FART рекомендує Sloperators ніколи не довіряти розгортанню, завжди перевіряти корисне навантаження перед випуском.

Після розгортання сповіщення FART слідують політиці ескалації: спочатку кімната, потім поверх, потім будівля.

На завершення

Кажуть, що інтернет — це серія труб, але насправді це серія сигналів.

Як і всі великі випуски, ми раді, що змогли витратити час на оптимізацію, тестування та належний випуск цієї зміни. Ми в захваті від того, що чекає нас у майбутньому. FastComments має кращі параметри масштабування і кращий час безвідмовної роботи в довгостроковій перспективі завдяки цьому досягненню. Як говорить посібник FART: "Якщо ви відчуваєте щось, скажіть щось". Дайте нам знати нижче, якщо ви виявите будь-які проблеми.