Wed Apr 01 2026
...
Το Αυτόματο Σύστημα Μεταφοράς Διαδρομής FastComments
Εισαγωγή
Το Αυτόματο Σύστημα Μεταφοράς Διαδρομής FastComments (FARTS) είναι το επίπεδο μεταφοράς και υπηρεσίας μας. Το FARTS βοηθά στην κυκλοφορία, καθορίζοντας τη διαδρομή της κυκλοφορίας βάσει της τοποθεσίας του χρήστη και δυνητικά του φόρτου στο μέλλον. Αποτελείται από διάφορα διαφορετικά συστήματα, μια γεω-ενεργή στρώση DNS, έναν proxy DB, αναπαραγωγή DB, διαχείριση πιστοποιητικών SSL, αντίστροφο proxy και CDN που χρησιμοποιεί έναν δίσκο LRU cache για την αποθήκευση assets στην άκρη.
Active-Active
Η τελευταία έκδοση του FART περιλαμβάνει μια ενσωματωμένη στρώση proxy και αναπαραγωγής για τη βάση δεδομένων μας. Αυτό επιτρέπει στο FastComments να είναι Active-Active με παγκόσμια διαθεσιμότητα γραφής, εξασφαλίζοντας ότι το FARTS είναι τελικά συνεπές. Περισσότερες λεπτομέρειες εδώ.
Μια προσέγγιση που καταφέραμε να κάνουμε νωρίς ήταν να δούμε αν μπορούσαμε να δημιουργήσουμε ένα ενεργό-ενεργό fork του MongoDB. Ένας από τους μηχανικούς μας (Sloperators) κατάφερε να το πετύχει αυτό με το Opus 4.6, ωστόσο, αποφασίσαμε ότι ο κίνδυνος να το κάνουμε αυτό ήταν μεγαλύτερος από το να δημιουργήσουμε το δικό μας απομονωμένο σύστημα.
Rust σε Κλίμακα
Μέρος της κινητροδότησης για τη δημιουργία του FART ήταν να αντικαταστήσουμε ορισμένες υπάρχουσες υπηρεσίες γραμμένες σε Java. Μετά από λίγο καιρό, αποφασίσαμε να τις ενοποιήσουμε σε μια υπηρεσία Rust για να μειώσουμε το χρόνο εκτέλεσης. Αυτό ήταν μια αποδεκτή συμφωνία, δεδομένου ότι δεν αναπτύσσουμε το FART συχνά. Το FART είναι συμπιεσμένο με LTO, οπότε μπο можем πραγματικά να το αφήσουμε να "σκίσει".
Είχαμε περάσει πολύ χρόνο προσπαθώντας να ρυθμίσουμε το παλιό σύστημα Java με διάφορους GC κ.λπ., και τελικά αποφασίσαμε ότι το async Rust + Mimalloc αποδίδει σημαντικά καλύτερα στον ίδιο εξοπλισμό με πολύ χαμηλότερες απαιτήσεις μνήμης, οπότε η αλλαγή ήταν προφανής.
Το Rust αποδείχθηκε πραγματικά εξαιρετικό για κώδικα που σχετίζεται με το δίκτυο που χρησιμοποιεί κοινά heaps και locks. Δεν είναι, όμως, απαλλαγμένο από ζητήματα runtime. Αξίζει ίσως να αναφέρουμε ότι ο κώδικας που γράφεται από LLMs σε Rust είναι αρκετά επιρρεπής σε deadlocks, και ένας τρόπος να το ξεπεράσουμε είναι να σχεδιάσουμε τα συστήματα ως εύκολα κατανοητές μηχανές καταστάσεων, αντί για απλώς σωρούς async/await.
Ο Master του FART
Κάθε ανάπτυξη περιλαμβάνει τον δικό της Master FART. Ο master είναι υπεύθυνος για το συντονισμό των crons, webhooks και άλλων.
Επίπτωση στους Πελάτες
Το σύστημα FART είναι σε παραγωγή εδώ και περίπου ένα χρόνο τώρα. Μόνο πρόσφατα κάναμε τη μετεγκατάσταση στην ανάπτυξη Active-Active. Υπάρχει κάποια επίπτωση στην ανάγνωση των δικών σας εγγραφών σε διάφορες περιοχές, η οποία καλύπτεται στο παραπάνω συνδεδεμένο άρθρο και στα docs.
Το FART λειτουργεί ήσυχα στο παρασκήνιο, αν και η παρουσία του γίνεται πάντα αισθητή. Ελπίζουμε να διαπιστώσετε ότι τα συστήματά μας είναι γρηγορότερα για τις περιπτώσεις χρήσης σας (κυρίως οι ενέργειες χρηστών που οδηγούν σε μεταβολές στα δεδομένα θα είναι γρηγορότερες σε ορισμένες περιοχές).
Αναπτύξεις
Η ανάπτυξη χρησιμοποιεί το ίδιο παγκόσμιο σύστημα συντονισμού που χρησιμοποιούμε για την ανάπτυξη των υπηρεσιών. Η τεκμηρίωση του FART συνιστά στους Sloperators να μην εμπιστεύονται ποτέ μια ανάπτυξη, πάντοτε να επιβεβαιώνουν το payload πριν την απελευθέρωση.
Μετά την ανάπτυξη, οι ειδοποιήσεις FART ακολουθούν μια πολιτική κλιμάκωσης: πρώτα το δωμάτιο, μετά ο όροφος, και μετά το κτήριο.
Στο Συμπέρασμα
Λένε ότι το διαδίκτυο είναι μια σειρά από σωλήνες, αλλά στην πραγματικότητα είναι μια σειρά από αέρια.
Όπως με όλες τις μεγάλες εκδόσεις, είμαστε ευτυχείς που μπορέσαμε να αφιερώσουμε χρόνο για να βελτιστοποιήσουμε, να δοκιμάσουμε και να εκδώσουμε σωστά αυτή την αλλαγή. Είμαστε ενθουσιασμένοι με το τι έρχεται. Το FastComments θα πρέπει να κλιμακωθεί καλύτερα και να έχει καλύτερη διαθεσιμότητα στο μέλλον με αυτό το έργο. Όπως λέει το runbook του FART: "Αν μυρίζεις κάτι, πες κάτι". Ενημερώστε μας παρακάτω αν ανακαλύψετε οποιαδήποτε προβλήματα.
