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, досить схильний до дедлоків, і один із способів уникнути цього - проектувати системи як прості у зрозумінні станомашини, а не просто купи async/await.
Майстер FART
Кожне розгортання містить свого власного Майстра FART. Майстер відповідає за оркестрацію кронів, вебхуків тощо.
Вплив на клієнтів
Система FART працює в продуктивному середовищі приблизно рік. Лише нещодавно ми провели міграцію до розгортання Active-Active. Є деякий вплив на читання ваших власних записів по регіонах, про що йдеться в блозі, зазначеному вище, та в документації.
FART працює тихо у фоновому режимі, хоча його присутність завжди відчувається. Ми сподіваємося, що ви вважаєте наші системи швидшими для ваших випадків використання (переважно дії користувачів, які призводять до змін у даних, будуть швидшими в деяких регіонах).
Розгортання
Розгортання використовує ту ж глобальну оркестраційну систему, яку ми використовуємо для розгортання самих служб. Документація FART рекомендує Sloperators ніколи не довіряти розгортанню, завжди перевіряючи payload перед випуском.
Після розгортання FART сповіщення слідують політиці ескалації: спочатку кімната, потім поверх, потім будівля.
На завершення
Кажуть, що інтернет - це ряд труб, але насправді це ряд пердунів.
Як і у всіх великих релізах, ми раді, що ми змогли витратити час на оптимізацію, тестування та належний випуск цієї зміни. Ми схвильовані тим, що чекає нас у майбутньому. FastComments повинен краще масштабуватися та мати кращий час безвідмовної роботи в довгостроковій перспективі завдяки цій роботі. Як говорить посібник FART: "Якщо ви відчуваєте щось, скажіть щось". Дайте нам знати нижче, якщо ви виявите якісь проблеми.
