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 система с различни GC и т.н., и в крайна сметка просто решихме, че асинхронен Rust + Mimalloc представя значително по-добри резултати на същия хардуер с много по-ниски изисквания за памет, така че преминаването беше очевиден избор.

Rust се оказа наистина страхотен за код, свързан с мрежата, който използва споделени купчини и заключвания. Въпреки това, той не е невъзмутим на проблеми в изпълнението. Може би е важно да се отбележи, че кодът, написан от LLMs в Rust, е доста податлив на задръствания, а начин да се избегне това е да проектирате системи като лесни за разбиране автоматични машини, вместо просто купчини от асинхронни/изчакващи.

FART Мастър

Всяко разгръщане съдържа свой собствен FART Мастър. Мастърът отговаря за организиране на крон задания, уебхукове и т.н.

Влияние върху клиентите

Системата FART е в продукция от около година. Само наскоро направихме миграция към разгръщане в активен-активен режим. Има известно влияние при четене на собствените ви записвания в различни региони, което е обхванато в свързания по-горе блог пост и в документацията.

FART работи тихо на заден план, въпреки че присъствието му винаги се чувства. Надяваме се, че нашите системи ще бъдат по-бързи за вашите случаи на употреба (предимно действия на потребителите, които водят до промени в данните, ще бъдат по-бързи в някои региони).

Разгръщания

Разгръщането използва същата глобална оркестрационна система, която използваме за разгръщане на самите услуги. Документацията на FART препоръчва на Sloperators никога да не се доверяват на разгръщане, винаги да проверяват полезния товар преди освобождаването.

След разгръщането, известията за FART следват политика на ескалация: първо стаята, след това етажът, след това сградата.

В заключение

Казват, че интернетът е серия от тръби, но всъщност е серия от флатули.

Както всички основни версии, ние сме радостни, че можахме да отделим време за оптимизация, тестване и правилно пускане на това изменение. Вълнуваме се от това, което идва по линия. FastComments трябва да се мащабира по-добре и да има по-добро време на работа в дългосрочен план с тази работа. Както казва руноутът на FART: "Ако усетите нещо, кажете нещо". Уведомете ни по-долу, ако откриете проблеми.