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, ωστόσο, αποφασίσαμε ότι ο κίνδυνος να το κάνουμε αυτό ήταν μεγαλύτερος από την κατασκευή του δικού μας απομονωμένου συστήματος.

Rust σε Κλίμακα

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

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

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

Ο Δάσκαλος FART

Κάθε ανάπτυξη περιέχει τον δικό της Δάσκαλο FART. Ο δάσκαλος είναι υπεύθυνος για την οργάνωση των cron, των webhooks και ούτω καθεξής.

Επίδραση στον Πελάτη

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

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

Αναπτύξεις

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

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

Συμπερασματικά

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

Όπως σε όλες τις μεγάλες κυκλοφορίες, είμαστε ευτυχείς που μπορέσαμε να αφιερώσουμε χρόνο για να βελτιστοποιήσουμε, να δοκιμάσουμε και να απελευθερώσουμε αυτή την αλλαγή σωστά. Είμαστε ενθουσιασμένοι για το τι έρχεται.

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