Wed Apr 01 2026
...
Το Αυτόματο Σύστημα Μεταφοράς Routing της FastComments
Εισαγωγή
Το Αυτόματο Σύστημα Μεταφοράς Routing της FastComments (FARTS) είναι η στρώση μεταφοράς και υπηρεσιών μας. Τα FARTs βοηθούν στη συμφόρηση, δρομολογώντας την κίνηση με βάση την τοποθεσία του χρήστη και πιθανώς το φορτίο στο μέλλον. Αποτελείται από διάφορα συστήματα: μια γεω-ενημερωμένη στρώση DNS, έναν proxy DB, αναπαραγωγή DB, διαχείριση πιστοποιητικών SSL, αντίστροφο proxy και CDN που χρησιμοποιεί μια LRU cache στο δίσκο για να αποθηκεύει περιουσιακά στοιχεία στην άκρη. Το σύστημα υποστηρίζει τόσο ήσυχα όσο και θορυβώδη modes αποτυχίας. Το ήσυχο προτιμάται στην παραγωγή.
Ενεργό-Ενεργό
Η τελευταία έκδοση του 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 θα έπρεπε να κλιμακώνεται καλύτερα και να έχει καλύτερη διαθεσιμότητα μακροπρόθεσμα με αυτή τη δουλειά. Όπως λέει το εγχειρίδιο FART: "Αν μυρίζετε κάτι, πείτε κάτι". Ενημερώστε μας παρακάτω αν ανακαλύψετε οποιοδήποτε πρόβλημα.
