FastComments.com Blog


Wed Apr 01 2026
...

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

Въведение

Автоматизираната транспортна система за маршрутизиране на FastComments (FARTS) е нашият транспортен и сервизен слой. FARTs помагат при задръствания, маршрутизирайки трафик на базата на местоположението на потребителя и потенциално натоварване в бъдеще. Тя се състои от няколко различни системи, включително гео-осъзната DNS слой, DB прокси, репликация на DB, управление на SSL сертификати, реверсен прокси и CDN, който използва LRU кеш на диск за кеширане на активите на ръба. Системата поддържа както тихи, така и шумни режими на фейловер. Тихият режим е предпочитан в продукция.

Активен-Активен

Последната версия на FART съдържа вграден прокси и репликационен слой за нашата база данни. Това позволява на FastComments да бъде активен-активен с глобална възможност за писане, което ни позволява нашите FARTS да бъдат в крайна сметка консистентни. Повече детайли тук.

Един от подходите, които всъщност предприехме в началото, беше да видим дали можем да създадем разклонение на MongoDB. Един от нашите инженери (Sloperators) успя да реализира това с Opus 4.6, но решихме, че рискът от това е по-висок от изграждането на собствена изолирана система.

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

Rust в мащаб

Част от мотивацията за създаването на FART беше замяната на някои съществуващи услуги, написани на Java. След като се замислихме за това известно време, решихме да консолидираме тези услуги в една Rust услуга, за да намалим разходите за производителност. Това беше приемлив компромис, тъй като не разгръщаме FART често. FART е компилиран с LTO, така че можем да го направим наистина мощен.

Прекарвахме много време в опити за настройка на старата Java система с различни GC и т.н., и в крайна сметка просто решихме, че асинхронният Rust + Mimalloc работи значително по-добре на същия хардуер с много по-ниски изисквания за памет, така че смяната беше лесен избор.

Главен FART

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

Въздействие върху клиентите

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

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

Разгръщания

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

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

В заключение

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