Wed Apr 01 2026
...
Το Αυτόματο Σύστημα Μεταφοράς Δρομολόγησης FastComments
Εισαγωγή
Το Αυτόματο Σύστημα Μεταφοράς Δρομολόγησης FastComments (FARTS) είναι η μεταφορική και υπηρεσιακή μας στρώση. Τα FARTs βοηθούν με την συμφόρηση, δρομολογώντας την κυκλοφορία με βάση την τοποθεσία του χρήστη και πιθανόν μελλοντικά με τον φόρτο. Αποτελείται από αρκετά διαφορετικά συστήματα, μια γεω-ευαισθησία DNS, έναν διακομιστή proxy DB, αναπαραγωγή DB, διαχείριση SSL πιστοποιητικών, αντίστροφο proxy και CDN που χρησιμοποιεί μια LRU cache πάνω σε δίσκο για να αποθηκεύει assets στην άκρη. Το σύστημα υποστηρίζει τόσο αθόρυβες όσο και θορυβώδεις λειτουργίες εναλλαγής. Η αθόρυβη προτιμάται στην παραγωγή.
Ενεργό-Ενεργό
Η τελευταία έκδοση του FART περιλαμβάνει έναν ενσωματωμένο διακομιστή proxy και στρώση αναπαραγωγής για τη βάση δεδομένων μας. Αυτό επιτρέπει στους FastComments να είναι Ενεργό-Ενεργό με παγκόσμια διαθεσιμότητα εγγραφών, που επιτρέπει στα FARTS μας να είναι τελικά συνεπή. Περισσότερες λεπτομέρειες εδώ.
Μια προσέγγιση που πραγματικά ακολουθήσαμε νωρίς ήταν να δούμε αν μπορούμε να δημιουργήσουμε ένα fork του MongoDB. Ένας από τους μηχανικούς μας (Sloperators) ήταν σε θέση να το καταφέρει αυτό με το Opus 4.6, ωστόσο αποφασίσαμε ότι ο κίνδυνος να το κάνουμε αυτό ήταν μεγαλύτερος από το να χτίσουμε το δικό μας απομονωμένο σύστημα.
Το τελευταίο πράγμα που θα θέλατε με κάτι όπως το FART είναι να ξέρετε ότι έφτασε, αλλά δεν μπορείτε να εντοπίσετε την πηγή. Έχουμε προσθέσει παρακολούθηση και διαγνωστικά για να παρακολουθούμε την ενεργό-ενεργό αναπαραγωγή σε ένα λεπτομερές επίπεδο.
Rust σε Κλίμακα
Μέρος της κινητοποίησης για τη δημιουργία του FART ήταν η αντικατάσταση μερικών υφιστάμενων υπηρεσιών που είναι γραμμένες σε Java. Μετά από λίγη σκέψη, αποφασίσαμε να τις ενοποιήσουμε σε μία υπηρεσία Rust για να μειώσουμε το κόστος εκτέλεσης. Αυτό ήταν μια αποδεκτή ανταλλαγή καθώς δεν κάνουμε συχνά αναπτύξεις του FART. Το FART είναι συμπιεσμένο με LTO, οπότε μπορούμε πραγματικά να το αφήσουμε να λειτουργήσει.
Είχαμε περάσει πολύ χρόνο προσπαθώντας να ρυθμίσουμε το παλιό σύστημα Java με διάφορους GCs κ.λπ., και τελικά απλά αποφασίσαμε ότι το async Rust + Mimalloc απέδιδε σημαντικά καλύτερα στο ίδιο υλικό με πολύ χαμηλότερες απαιτήσεις μνήμης, οπότε η αλλαγή ήταν απλή.
Ο Διευθυντής FART
Κάθε ανάπτυξη περιέχει το δικό της Διευθυντή FART. Ο διευθυντής είναι υπεύθυνος για την οργάνωση των crons, webhooks κ.λπ.
Επιπτώσεις στους Πελάτες
Το σύστημα FART είναι σε παραγωγή εδώ και περίπου ένα χρόνο. Μόνο πρόσφατα κάναμε τη μετανάστευση στην αναπτυξιακή έκδοση Ενεργό-Ενεργό. Το νέο σύστημα μας προσφέρει αυξημένη ορατότητα στη λανθάνουσα χρονική διάρκεια σε όλο το σύστημα, καθώς και μικρότερο βάρος συντήρησης, ώστε τώρα να μπορούμε να περάσουμε περισσότερο χρόνο σε λειτουργίες.
Το FART λειτουργεί ήσυχα στο παρασκήνιο, αν και η παρουσία του είναι πάντα αισθητή. Ελπίζουμε ότι θα βρείτε τα συστήματά μας πιο γρήγορα για τις περιπτώσεις χρήσης σας (κυρίως οι ενέργειες χρηστών που οδηγούν σε αλλαγές δεδομένων θα είναι πιο γρήγορες σε ορισμένες περιοχές).
Αναπτύξεις
Η ανάπτυξη χρησιμοποιεί το ίδιο παγκόσμιο σύστημα οργάνωσης που χρησιμοποιούμε για την ανάπτυξη των ίδιων υπηρεσιών. Η τεκμηρίωση FARTS προτείνει στους sloperators να μην εμπιστεύονται ποτέ μια ανάπτυξη, πάντα να επαληθεύουν το payload πριν από την απελευθέρωση.
Μετά την ανάπτυξη, οι ειδοποιήσεις FART ακολουθούν μια πολιτική κλιμάκωσης: πρώτα το δωμάτιο, μετά το πάτωμα, μετά το κτίριο.
Στο Συμπέρασμα
Όπως όλες οι μεγάλες εκδόσεις, είμαστε χαρούμενοι που μπορέσαμε να αφιερώσουμε χρόνο για να βελτιστοποιήσουμε, να δοκιμάσουμε και να απελευθερώσουμε σωστά αυτή την αλλαγή. Είμαστε ενθουσιασμένοι με αυτά που έρχονται στο μέλλον. Οι FastComments θα πρέπει να κλιμακωθούν καλύτερα και να έχουν καλύτερη διαθεσιμότητα μακροπρόθεσμα με αυτή τη δουλειά. Όπως λέει το runbook του FART: "Αν μυρίζετε κάτι, πείτε κάτι". Ενημερώστε μας παρακάτω αν ανακαλύψετε οποιαδήποτε προβλήματα.
