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 система с различни GCs и т.н., и в крайна сметка просто решихме, че асинхронен Rust + Mimalloc работи значително по-добре на същия хардуер с много по-ниски изисквания за памет, така че смяната беше очевидна.
Rust се оказа наистина чудесен за код, свързан с мрежата, който използва споделени купчини и заключвания. Въпреки това, той не е непроницаем за проблеми по време на работа. Освен това е добре да се каже, че кодът, написан от LLMs на Rust, е доста склонен към блокировки и начин да се избегне това е да се проектират системи, като лесни за разбиране автоматични машини, вместо просто купчини async/await.
FART Master
Всяко внедряване съдържа свой собствен FART Master. Мастърът е отговорен за оркестрирането на кронове, уебхук и т.н.
Въздействие върху клиентите
Системата FART е в продукция от около година. Само наскоро направихме миграцията към внедряването Активен-Активен. Има известно въздействие за четене на собствените ви записи между регионите, което е обхванато в горепосочената блога и в документацията.
FART работи тихо на заден план, въпреки че присъствието му винаги се усеща. Надяваме се, че ще намерите нашите системи за по-бързи за вашите случаи на използване (повечето действия на потребителите, които водят до промени в данните, ще бъдат по-бързи в някои региони).
Внедрения
Внедрението използва същата глобална оркестрационна система, която използваме за внедряване на самите услуги. Документацията на FART препоръчва на Sloperators никога да не се доверяват на внедряване, винаги да проверяват полезния товар преди освобождаване.
След внедряването алармите на FART следват политика на ескалация: първо стаята, след това етажът, след това сградата.
На финала
Те казват, че интернетът е серия от тръби, но всъщност това е серия от звуци.
Както всички основни версии, радостни сме, че имахме време да оптимизираме, тестваме и правилно да пуснем тази промяна. Вълнуваме се за това, което предстои. FastComments трябва да мащабира по-добре и да има по-добра наличност в дългосрочен план с тази работа. Както казва работната книга на FART: "Ако миришеш нещо, кажи нещо". Уведомете ни по-долу, ако откриете някакви проблеми.
