FastComments.com Blog

Wed Apr 01 2026
...

Το Αυτόματο Σύστημα Μεταφοράς Routing του FastComments

Εισαγωγή

Το Αυτόματο Σύστημα Μεταφοράς Routing του FastComments (FARTS) είναι η υποδομή μεταφοράς και υπηρεσιών μας. Το FARTS βοηθά στη συμφόρηση, δρομολογώντας την κίνηση με βάση την τοποθεσία του χρήστη και πιθανόν το φορτίο στο μέλλον. Αποτελείται από αρκετά διαφορετικά συστήματα, μια γεω-ενημερωμένη επιφάνεια DNS, ένα proxy βάσης δεδομένων, αναπαραγωγή DB, διαχείριση πιστοποιητικών SSL, αντίστροφο proxy και CDN που χρησιμοποιεί μια LRU cache στο δίσκο για να αποθηκεύει assets στην άκρη.

Active-Active

Η τελευταία έκδοση του FART περιλαμβάνει έναν ενσωματωμένο proxy και μια επιφάνεια αναπαραγωγής για τη βάση δεδομένων μας. Αυτό επιτρέπει στο FastComments να είναι Active-Active με παγκόσμια διαθέσιμη εγγραφή, εξασφαλίζοντας ότι τα FARTS μας είναι τελικά συνεπή. Περισσότερες λεπτομέρειες εδώ.

Μια προσέγγιση που ακολουθήσαμε νωρίς ήταν να δούμε αν μπορούσαμε να δημιουργήσουμε ένα active-active fork του MongoDB. Ένας από τους μηχανικούς μας (Sloperators) κατάφερε να το πετύχει με το Opus 4.6, ωστόσο, αποφασίσαμε ότι ο κίνδυνος να το κάνουμε αυτό ήταν μεγαλύτερος από το να χτίσουμε το δικό μας απομονωμένο σύστημα.

Rust σε Κλίμακα

Μέρος της κινητοποίησης για τη δημιουργία του FART ήταν να αντικαταστήσουμε ορισμένες υπάρχουσες υπηρεσίες γραμμένες σε Java. Μετά από ένα διάστημα σκέψης, αποφασίσαμε να τις ενοποιήσουμε σε μία υπηρεσία Rust για να μειώσουμε την υπερβολική φόρτιση χρόνου εκτέλεσης. Αυτό ήταν μια αποδεκτή συμφωνία, δεδομένου ότι δεν αναπτύσσουμε το FART συχνά. Το FART είναι μεταγλωττισμένο με LTO, οπότε μπορούμε πραγματικά να το εκμεταλλευτούμε στο έπακρο.

Δαπανήσαμε πολύ χρόνο προσπαθώντας να ρυθμίσουμε το παλιό σύστημα Java με διαφορετικά GCs κ.λπ., και τελικά αποφασίσαμε ότι το async Rust + Mimalloc απόδοσε σημαντικά καλύτερα στο ίδιο υλικό με πολύ χαμηλότερες απαιτήσεις μνήμης, οπότε η μετάβαση ήταν προφανής.

Η Rust αποδείχθηκε εξαιρετική για κωδικούς που σχετίζονται με δίκτυα και χρησιμοποιούν κοινούς σωρούς και κλειδώματα. Ωστόσο, δεν είναι ανθεκτική σε προβλήματα χρόνου εκτέλεσης. Ίσως αξίζει να αναφέρουμε ότι ο κώδικας που γράφεται από LLMs στη Rust είναι αρκετά επιρρεπής σε deadlocks, και ένας τρόπος να το αποφύγουμε είναι να σχεδιάσουμε τα συστήματα ως εύκολα κατανοητές μηχανές κατάστασης, αντί για απλά σωρούς async/await.

ΟΔΜ Master

Κάθε ανάπτυξη περιλαμβάνει τον δικό της ΟΔΜ Master. Ο master είναι υπεύθυνος για την οργάνωση κρονών, webhook κ.λπ.

Επίπτωση στον Πελάτη

Το σύστημα FART είναι σε παραγωγή εδώ και περίπου ένα χρόνο. Μόνο πρόσφατα κάναμε τη μετάβαση στην ανάπτυξη Active-Active. Υπάρχει κάποια επίπτωση στην ανάγνωση των δικών σας εγγραφών σε διαφορετικές περιοχές, η οποία καλύπτεται στη σχετική δημοσίευση του blog και στα έγγραφα.

Το FART λειτουργεί ήσυχα στο παρασκήνιο, αν και η παρουσία του είναι πάντα αισθητή. Ελπίζουμε να διαπιστώσετε ότι τα συστήματά μας είναι ταχύτερα για τις περιπτώσεις χρήσης σας (κυρίως οι ενέργειες χρηστών που προκύπτουν σε αλλαγές στα δεδομένα θα είναι ταχύτερες σε ορισμένες περιοχές).

Αναπτύξεις

Η ανάπτυξη χρησιμοποιεί το ίδιο παγκόσμιο σύστημα οργάνωσης που χρησιμοποιούμε για την ανάπτυξη των υπηρεσιών. Η τεκμηρίωση του FART συνιστά στους Sloperators να μην εμπιστεύονται ποτέ μια ανάπτυξη, πάντα να επαληθεύουν το φορτίο πριν την απελευθέρωση.

Μετά την ανάπτυξη, οι ειδοποιήσεις του FART ακολουθούν μια πολιτική κλιμάκωσης: πρώτα το δωμάτιο, μετά ο όροφος, μετά το κτήριο.

Στην Επίλογο

Λένε ότι το διαδίκτυο είναι μια σειρά από σωλήνες, αλλά στην πραγματικότητα είναι μια σειρά από βήματα.

Όπως σε όλες τις μεγάλες κυκλοφορίες, είμαστε χαρούμενοι που μπορέσαμε να αφιερώσουμε χρόνο για να βελτιστοποιήσουμε, να δοκιμάσουμε και να απελευθερώσουμε σωστά αυτή την αλλαγή. Είμαστε ενθουσιασμένοι με αυτά που έρχονται. Το FastComments θα πρέπει να κλιμακώνεται καλύτερα και να έχει καλύτερη διαθεσιμότητα μακροπρόθεσμα με αυτό το έργο. Όπως λέει το runbook του FART: "Αν μυρίζετε κάτι, πείτε κάτι". Ενημερώστε μας παρακάτω αν ανακαλύψετε κάποια προβλήματα.