LMAX Αρχιτεκτονική

0

LMAX είναι μια νέα λιανικών χρηματοπιστωτικών πλατφόρμα συναλλαγών. Ως αποτέλεσμα έχει να επεξεργαστεί πολλές συναλλαγές με χαμηλό latency. Το σύστημα είναι χτισμένο στην JVM πλατφόρμα και τα κέντρα με την Επιχειρηματική Λογική του Επεξεργαστή που μπορεί να χειριστεί 6 εκατομμύρια εντολές ανά δευτερόλεπτο σε ένα ενιαίο νήμα. Η Επιχειρηματική Λογική Επεξεργαστής τρέχει εξ ολοκλήρου στη μνήμη χρησιμοποιώντας εκδήλωση προμήθεια. Η Επιχειρηματική Λογική Επεξεργαστή περιβάλλεται από Διαταράκτες – μια συνταύτιση στοιχείο που υλοποιεί ένα δίκτυο ουρές που λειτουργούν χωρίς να χρειάζεται κλειδαριές. Κατά τη διαδικασία της σχεδίασης, η ομάδα κατέληξε στο συμπέρασμα ότι οι πρόσφατες οδηγίες σε υψηλής απόδοσης συνταύτιση μοντέλα που χρησιμοποιούν τις ουρές τους είναι ουσιαστικά σε αντίθεση με το σύγχρονο σχέδιο ΚΜΕ.

Τα τελευταία χρόνια ακούμε συνεχώς ότι το “δωρεάν γεύμα”[1] – δεν μπορούμε να περιμένουμε αυξήσεις σε επιμέρους ταχύτητα της CPU. Έτσι για να γράψετε γρήγορα κώδικα πρέπει να χρησιμοποιήσει ρητά πολλούς επεξεργαστές με ταυτόχρονη λογισμικού. Αυτό δεν είναι καλή είδηση – γραφής ταυτόχρονη κώδικα είναι πολύ δύσκολο. Κλειδαριές και σημαφόροι είναι δύσκολο να λόγο και δύσκολο να το test – που σημαίνει ότι ξοδεύουν περισσότερο χρόνο να ανησυχείτε για την ικανοποίηση του υπολογιστή από εμάς την επίλυση του τομέα πρόβλημα. Διάφορα μοντέλα ταυτοχρονισμού, όπως οι Ηθοποιοί και το Λογισμικό Συναλλαγών Μνήμης, με στόχο να γίνει αυτό πιο εύκολο – αλλά υπάρχει ακόμα ένα βάρος που εισάγει σφάλματα και την πολυπλοκότητα.

Έτσι, ήμουν γοητευμένος να ακούσω μια ομιλία σε QCon Λονδίνο, το Μάρτιο του περασμένου έτους από το LMAX. LMAX είναι μια νέα λιανικών χρηματοπιστωτικών πλατφόρμα συναλλαγών. Η επιχειρηματική καινοτομία είναι ότι είναι μια επίσημη πλατφόρμα που επιτρέπει σε οποιονδήποτε να το εμπόριο σε μια σειρά από παράγωγα χρηματοπιστωτικά προϊόντα[2]. Μια πλατφόρμα συναλλαγών, όπως αυτό χρειάζεται πολύ χαμηλό latency – συναλλαγές πρέπει να υποβληθούν σε επεξεργασία γρήγορα, γιατί η αγορά κινείται γρήγορα. Λιανική πλατφόρμα προσθέτει πολυπλοκότητα επειδή πρέπει να το κάνουμε αυτό για πολλούς ανθρώπους. Έτσι, το αποτέλεσμα είναι περισσότερο τους χρήστες, με τα πολλά επαγγέλματα, τα οποία πρέπει να υποβληθούν σε επεξεργασία γρήγορα.[3]

Με δεδομένο τη μετάβαση σε multi-core σκέψης, αυτού του είδους απαιτούν την απόδοση, φυσικά, θα υποδεικνύουν ρητά ταυτόχρονη μοντέλο προγραμματισμού – και πράγματι αυτό ήταν το σημείο εκκίνησης. Αλλά αυτό που τράβηξε την προσοχή του κόσμου στο QCon ήταν ότι αυτό δεν ήταν εκεί που κατέληξαν. Στην πραγματικότητα κατέληξαν με την επιχειρηματική λογική για την πλατφόρμα τους: όλα τα επαγγέλματα, από όλους τους πελάτες, σε όλες τις αγορές – σε ένα ενιαίο νήμα. Ένα νήμα που θα επεξεργαστεί 6 εκατομμύρια εντολές ανά δευτερόλεπτο χρησιμοποιώντας υλικό αγαθό.[4]

Επεξεργασία των παρτίδων των συναλλαγών με low-latency και κανένας από την πολυπλοκότητα των ταυτόχρονων κώδικα – πώς μπορώ να αντισταθώ και το σκάψιμο σε αυτό; Ευτυχώς, μια άλλη διαφορά LMAX έχει άλλες χρηματοοικονομικές εταιρείες είναι ότι είναι πολύ ευτυχής να μιλήσουμε για τις τεχνολογικές αποφάσεις. Έτσι τώρα LMAX είναι σε παραγωγή εδώ και λίγο καιρό είναι το χρόνο για να εξερευνήσετε τη συναρπαστική σχεδίαση.

Γενική Δομή

Σε ένα πρώτο επίπεδο, η αρχιτεκτονική έχει τρία μέρη

Όπως υποδηλώνει το όνομά του, την επιχειρηματική λογική επεξεργαστής χειρίζεται όλο το business logic της εφαρμογής. Όπως ανέφερα παραπάνω, αυτό γίνεται ως ένα single-threaded πρόγραμμα java το οποίο αντιδρά με τη μέθοδο κλήσεις και παράγει έξοδο εκδηλώσεις. Κατά συνέπεια, δεν είναι ένα απλό πρόγραμμα java που δεν απαιτεί οποιαδήποτε πλατφόρμα, πλαίσια για να εκτελέσετε άλλες από την JVM ίδια, η οποία του επιτρέπει να εύκολα να τρέξει σε δοκιμή περιβάλλοντα.

Αν και η Επιχειρηματική Λογική Επεξεργαστής μπορεί να τρέξει σε ένα απλό περιβάλλον για τη δοκιμή, είναι μάλλον πιο ενεργά χορογραφία να το πάρει για να τρέξει σε μια παραγωγή ρύθμιση. Εισαγωγή μηνυμάτων χρειάζεται να ληφθούν από ένα δίκτυο voip και unmarshaled, να αναπαραχθεί και journaled. Παραγωγή μηνύματα που πρέπει να δρομολογηθεί για το δίκτυο. Τα καθήκοντα αυτά διεκπεραιώνονται από την εισαγωγή και την παραγωγή διαταράκτες. Σε αντίθεση με την Επιχειρηματική Λογική του Επεξεργαστή, αυτά είναι ταυτόχρονη συστατικά, δεδομένου ότι περιλαμβάνει λειτουργίες εισόδου / εξόδου, το οποίο είναι τόσο αργό και ανεξάρτητη. Είχαν σχεδιαστεί και κατασκευαστεί ειδικά για LMAX, αλλά (όπως και η συνολική αρχιτεκτονική) εφαρμόζονται αλλού.

Επιχειρηματική Λογική Επεξεργαστή

Κρατώντας στη μνήμη

Η Επιχειρηματική Λογική Επεξεργαστής παίρνει εισαγωγής μηνύματα διαδοχικά (με τη μορφή μέθοδο επίκλησης), τρέχει επιχειρηματική λογική, και εκπέμπει παραγωγή εκδηλώσεις. Λειτουργεί εξ ολοκλήρου στη μνήμη, δεν υπάρχει βάση δεδομένων ή άλλα επίμονα κατάστημα. Διατηρώντας όλα τα δεδομένα στη μνήμη έχει δύο σημαντικά οφέλη. Πρώτον, είναι γρήγορο – δεν υπάρχει βάση δεδομένων για να παρέχει αργή IO πρόσβασης, ούτε υπάρχει οποιαδήποτε συναλλακτική συμπεριφορά να εκτελέσει δεδομένου ότι όλη η επεξεργασία γίνεται διαδοχικά. Το δεύτερο πλεονέκτημα είναι ότι απλοποιεί τον προγραμματισμό – δεν υπάρχει object/relational mapping. Όλος ο κώδικας μπορεί να γραφτεί χρησιμοποιώντας Java είναι μοντέλο αντικειμένου χωρίς να χρειάζεται να κάνουν συμβιβασμούς για την αντιστοίχιση σε μια βάση δεδομένων.

Χρησιμοποιώντας μια δομή μνήμης έχει μια σημαντική συνέπεια – τι θα γίνει, αν όλα κολλάει; Ακόμα και το πιο ανθεκτικό συστήματα είναι ευάλωτα σε κάποιον τραβώντας τη δύναμη. Η καρδιά της που ασχολούνται με αυτό είναι το Γεγονός Προμήθεια – που σημαίνει ότι η τρέχουσα κατάσταση της Επιχείρησης Λογική Επεξεργαστής είναι εντελώς ωφελήματα που προκύπτουν από την επεξεργασία της εισαγωγής εκδηλώσεις. Όσο η εισαγωγή event stream διατηρείται σε σταθερό κατάστημα (η οποία είναι μία από τις θέσεις εργασίας της εισόδου διακόπτης), μπορείτε πάντα να αναδημιουργήσει την τρέχουσα κατάσταση των επιχειρήσεων λογική του κινητήρα με την επανάληψη των γεγονότων.

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

Έτσι, θεωρητικά, μπορείτε πάντα να ξαναχτίσουμε το κράτος από την Επιχειρηματική Λογική του Επεξεργαστή με την επανεπεξεργασία όλες τις εκδηλώσεις. Στην πράξη, ωστόσο, αυτό θα πάρει πολύ χρόνο που θα χρειαστεί για να γυρίσετε. Έτσι, όπως με την έκδοση συστήματα ελέγχου, LMAX μπορεί να κάνει στιγμιότυπα από την επιχειρησιακή Λογική Επεξεργαστή κράτους και την αποκατάσταση από τα στιγμιότυπα. Παίρνουν ένα στιγμιότυπο κάθε βράδυ κατά τη διάρκεια περιόδων χαμηλής δραστηριότητας. Η επανεκκίνηση της Επιχειρηματικής Λογικής Επεξεργαστής είναι γρήγορη, πλήρη επανεκκίνηση – συμπεριλαμβανομένων επανεκκίνηση της JVM, φόρτωση πρόσφατη φωτογραφία, και αναπαράγοντας μια ημερών περιοδικά – διαρκεί λιγότερο από ένα λεπτό.

Στιγμιότυπα κάνει την εκκίνηση μιας νέας Επιχειρηματικής Λογικής Επεξεργαστής πιο γρήγορα, αλλά όχι αρκετά γρήγορα, θα πρέπει Επιχειρηματική Λογική Επεξεργαστή συντριβή στις 2 μ. μ. Ως αποτέλεσμα LMAX κρατά πολλαπλά Επιχειρηματική Λογική Επεξεργαστές που τρέχουν όλη την ώρα[6]. Κάθε συμβάν εισόδου είναι σε επεξεργασία από πολλαπλούς επεξεργαστές, αλλά όλοι, αλλά ένας επεξεργαστής έχει την παραγωγή αγνοηθεί. Πρέπει να το ζήσεις επεξεργαστής αποτύχει, το σύστημα μεταβαίνει σε ένα άλλο. Αυτή η ικανότητα να χειριστεί fail-over είναι ένα άλλο όφελος από τη χρήση Εκδήλωση Προμήθεια.

Από την εκδήλωση πρόσβαση σε αντίγραφα μπορούν να εναλλαγή μεταξύ των επεξεργαστών σε ένα θέμα μικρο-δευτερόλεπτα. Καθώς και τη λήψη στιγμιότυπα κάθε βράδυ, επίσης, την επανεκκίνηση της Επιχειρηματικής Λογικής Επεξεργαστές κάθε βράδυ. Η αναπαραγωγή τους επιτρέπει να το κάνετε αυτό χωρίς το χρόνο διακοπής, έτσι ώστε να συνεχίσει να επεξεργάζεται συναλλαγές 24/7.

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

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

Αυτή η διαγνωστική ικανότητα να επεκτείνει την επιχείρηση διαγνωστικά. Υπάρχουν ορισμένες επαγγελματικές εργασίες, όπως τη διαχείριση του κινδύνου, που απαιτούν σημαντική υπολογισμό, ότι δεν απαιτείται για την επεξεργασία των παραγγελιών. Ένα παράδειγμα είναι μια λίστα με το top 20 πελάτες με προφίλ κινδύνου με βάση τις τρέχουσες εμπορικές θέσεις. Η ομάδα χειρίζεται αυτό με την περιστροφή ενός αναπαράγουν domain model και την εκτέλεση των υπολογισμών εκεί, όπου δεν θα παρεμβαίνει με τον πυρήνα της επεξεργασίας των παραγγελιών. Αυτά ανάλυσης του τομέα, τα μοντέλα μπορούν να έχουν παραλλαγή μοντέλα δεδομένων, διαφορετικά σύνολα δεδομένων στη μνήμη, και να τρέξει σε διαφορετικές μηχανές.
Ρύθμιση της απόδοσης

Μέχρι στιγμής έχω εξηγήσει ότι το κλειδί για την ταχύτητα με την Επιχειρηματική Λογική του Επεξεργαστή κάνει ό, διαδοχικά, στη μνήμη. Μόλις το κάνεις αυτό (και τίποτα πραγματικά ηλίθιο) επιτρέπει στους προγραμματιστές να γράφουν κώδικα που μπορεί να επεξεργαστεί 10K TPS[7]. Στη συνέχεια διαπίστωσε ότι η επικέντρωση στα απλά στοιχεία του κώδικα, θα μπορούσε να φέρει αυτό επάνω στο 100K TPS σειρά. Πρέπει λοιπόν-συνυπολογίζονται κώδικα και μικρές μεθόδους – κυρίως αυτό επιτρέπει Hotspot για να κάνει καλύτερα τη δουλειά της βελτιστοποίησης και για τους Επεξεργαστές να είναι πιο αποτελεσματική στην προσωρινή αποθήκευση του κώδικα, όπως είναι το τρέξιμο.

Πήρε λίγο περισσότερη εξυπνάδα να πάμε σε άλλη τάξη μεγέθους. Υπάρχουν πολλά πράγματα που το LMAX ομάδα βρήκε χρήσιμη για να φτάσετε εκεί. Το ένα ήταν να γράψεις custom υλοποιήσεις της java συλλογές που έχουν σχεδιαστεί για να είναι μνήμη cache για το περιβάλλον και προσεκτικοί με τα σκουπίδια[8]. Ένα παράδειγμα αυτού είναι η χρήση πρωτόγονων java λαχταρά ως hashmap πλήκτρα με ένα ειδικά γραμμένο σειράς υποστηρίζεται Χάρτης υλοποίησης (LongToObjectHashMap). Σε γενικές γραμμές, βρήκαν ότι η επιλογή των δομών δεδομένων συχνά κάνει μια μεγάλη διαφορά, οι Περισσότεροι προγραμματιστές άρπαξε ό, τι Λίστα που χρησιμοποιείται για τελευταία φορά αντί να σκεφτόμαστε την οποία η εφαρμογή είναι η σωστή για αυτό το πλαίσιο.[9]

Μια άλλη τεχνική για να φτάσει σε αυτό το τοπ επίπεδο απόδοσης βάζει την προσοχή σε δοκιμές επιδόσεων. Έχω από καιρό παρατηρήσει ότι οι άνθρωποι που μιλούν πολύ για τις τεχνικές για να βελτιώσετε τις επιδόσεις, αλλά το μόνο πράγμα που κάνει πραγματικά τη διαφορά είναι να το δοκιμάσετε. Ακόμη και καλοί προγραμματιστές είναι πολύ καλοί στην κατασκευή των επιδόσεων επιχειρήματα που καταλήγουν να είναι λάθος, τόσο το καλύτερο προγραμματιστές προτιμούν οι αναλυτές και οι διαδικασίες ελέγχου για την κερδοσκοπία.[10] Το LMAX ομάδα διαπίστωσε επίσης ότι οι δοκιμές γραφής πρώτο είναι μια πολύ αποτελεσματική πειθαρχία για τις δοκιμές.

Μοντέλο Προγραμματισμού

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

Θα χρησιμοποιήσω ένα απλό μη-LMAX παράδειγμα για να τονίσει. Φανταστείτε να κάνετε μια παραγγελία για ζελέ φασόλια με πιστωτική κάρτα. Μια απλή λιανική πώληση σύστημα, θα λάβει τις πληροφορίες της παραγγελίας σας, χρησιμοποιήστε μια πιστωτική κάρτα υπηρεσία επικύρωσης για να ελέγξετε αριθμό της πιστωτικής σας κάρτας, και στη συνέχεια επιβεβαιώστε την παραγγελία σας – όλα σε μια ενιαία λειτουργία. Το νήμα επεξεργασία της παραγγελίας σας θα μπλοκάρει, ενώ περιμένουν για την πιστωτική κάρτα που πρέπει να ελεγχθούν, αλλά αυτό το μπλοκ δεν θα είναι πολύ μεγάλη για το χρήστη, και ο server μπορεί να τρέξει πάντα άλλο νήμα σχετικά με τον επεξεργαστή, ενώ είναι σε αναμονή.

Στο LMAX αρχιτεκτονική, θα μοιραστούμε αυτή τη λειτουργία σε δύο. Η πρώτη λειτουργία θα συλλάβει τα στοιχεία της παραγγελίας και τελειώνει με την έξοδο ενός γεγονότος (credit card validation ζήτησε) για την εταιρεία της πιστωτικής κάρτας. Η Επιχειρηματική Λογική Επεξεργαστή θα συνεχίσουμε την επεξεργασία εκδηλώσεις για άλλους πελάτες, μέχρι να λάβει μια πίστωση-κάρτα-επικυρωμένη περίπτωση κατά την εισαγωγή event stream. Για την επεξεργασία αυτή εκδήλωση θα πραγματοποιήσει την επιβεβαίωση καθήκοντα για αυτή τη σειρά.

Λειτουργώντας σε αυτό το είδος του event-driven, ασύγχρονη στυλ, είναι κάπως ασυνήθιστη – παρόλο που η χρήση asynchrony να βελτιωθεί η ανταπόκριση της αίτησης, είναι μια γνωστή τεχνική. Βοηθά, επίσης, η επιχειρηματική διαδικασία είναι πιο ανθεκτική, καθώς θα πρέπει να είναι πιο σαφείς στον τρόπο σκέψης σχετικά με τα διαφορετικά πράγματα που μπορεί να συμβεί με την απομακρυσμένη εφαρμογή.

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

LMAX είναι στη μνήμη δομές είναι ανθεκτικές σε όλη εισαγωγής γεγονότα, οπότε αν υπάρχει ένα σφάλμα είναι σημαντικό να μην αφήσουμε τη μνήμη σε ασυνεπή κατάσταση. Ωστόσο δεν υπάρχει αυτοματοποιημένη rollback τις εγκαταστάσεις. Κατά συνέπεια, το LMAX ομάδα δίνει μεγάλη προσοχή στην εξασφάλιση της εισαγωγής γεγονότα είναι απολύτως έγκυρη, πριν να κάνετε οποιαδήποτε μετάλλαξη του στη μνήμη επίμονη κατάσταση. Βρήκαν ότι η δοκιμή είναι ένα βασικό εργαλείο για την έξαψη από αυτά τα είδη των προβλημάτων πριν πάει στην παραγωγή.

Εισόδου και Εξόδου Διαταράκτες

Αν και η επιχειρηματική λογική που παρουσιάζεται σε ένα ενιαίο νήμα, υπάρχουν ορισμένες εργασίες που πρέπει να γίνουν πριν θα μπορεί να επικαλεστεί ένα αντικείμενο μέθοδο. Η αρχική εισαγωγή για την επεξεργασία βγαίνει το καλώδιο, με τη μορφή της ένα μήνυμα, αυτό το μήνυμα πρέπει να unmarshaled σε μια μορφή κατάλληλη για την Επιχειρηματική Λογική του Επεξεργαστή για να χρησιμοποιήσετε. Εκδήλωση Προμήθεια στηρίζεται στην τήρηση ανθεκτικό εφημερίδα όλων των εισροών γεγονότα, έτσι ώστε κάθε μήνυμα εισόδου πρέπει να γίνει το journaling σε ένα ανθεκτικό κατάστημα. Τέλος, η αρχιτεκτονική του βασίζεται σε ένα σύμπλεγμα της Επιχειρηματικής Λογικής Επεξεργαστές, οπότε θα πρέπει να αναπαράγουν την εισαγωγή μηνύματα σε αυτό το σύμπλεγμα. Ομοίως, από την πλευρά της παραγωγής, η παραγωγή γεγονότα που πρέπει να δρομολογηθεί για τη μετάδοση μέσω δικτύου.

Ο αντιγραφέας και journaler περιλαμβάνει IO και ως εκ τούτου είναι σχετικά αργή. Μετά από όλα η κεντρική ιδέα της Επιχειρηματικής Λογικής Επεξεργαστής είναι ότι αποφεύγει να κάνει οποιαδήποτε IO. Επίσης, αυτά τα τρία καθήκοντα, είναι σχετικά ανεξάρτητες, όλα αυτά πρέπει να γίνουν πριν από την Επιχειρηματική Λογική Επεξεργαστής λειτουργεί σε ένα μήνυμα, αλλά μπορεί να γίνει με οποιαδήποτε σειρά. Έτσι, σε αντίθεση με την Επιχειρηματική Λογική του Επεξεργαστή, όπου κάθε συναλλαγή αλλαγές της αγοράς για τις επόμενες συναλλαγές, υπάρχει μια φυσική τακτοποίηση για συνταύτιση.

Για να χειριστεί αυτό το συνταύτιση το LMAX ομάδα ανέπτυξε μια ειδική συνταύτιση συστατικό, το οποίο λένε Διακόπτης[11].

Το LMAX ομάδα κυκλοφόρησε τον πηγαίο κώδικα του Διασπαστή με ένα open source άδεια.

Σε ένα ακατέργαστο επίπεδο, μπορείτε να σκεφτείτε έναν Διασπαστή ως ένα πολλαπλό γράφημα ουρές όπου οι παραγωγοί βάλτε τα αντικείμενα που αποστέλλονται σε όλους τους καταναλωτές για την παράλληλη κατανάλωση μέσω χωριστών κατάντη ουρές. Όταν κοιτάξεις μέσα θα δούμε ότι αυτό το δίκτυο ουρές είναι πραγματικά μια ενιαία δομή δεδομένων – ring buffer. Κάθε παραγωγός και καταναλωτής έχει μια σειρά μετρητή για να δείξει ποια υποδοχή στο buffer είναι επί του παρόντος. Κάθε παραγωγό/καταναλωτή, γράφει τη δική της ακολουθία πάγκο, αλλά μπορεί να διαβάσει τη σειρά τους μετρητές. Με αυτόν τον τρόπο ο παραγωγός μπορεί να διαβάσει τις καταναλωτές ” μετρητές για να εξασφαλιστεί η υποδοχή που θέλει να γράψει, είναι διαθέσιμο χωρίς κλειδαριές για τους μετρητές. Ομοίως, ένας καταναλωτής μπορεί να εξασφαλίσει μόνο διαδικασίες μηνύματα μόλις ένα άλλο καταναλωτή γίνεται με παρακολουθώντας τους μετρητές.

Παραγωγή διαταράκτες είναι παρόμοια, αλλά έχουν μόνο δύο διαδοχικές καταναλωτές για παράταξης και της παραγωγής.[12] Παραγωγή εκδηλώσεις οργανώνονται σε διάφορα θέματα, έτσι ώστε τα μηνύματα μπορούν να σταλούν μόνο στους δέκτες που ενδιαφέρονται για αυτά. Κάθε θέμα έχει τη δική του διασπαστή.

Οι ταραξίες που περιέγραψα χρησιμοποιούνται σε ένα στυλ με έναν παραγωγό και πολλαπλές καταναλωτές, αλλά αυτό δεν είναι περιορισμός στο σχέδιο του διασπαστή. Ο διακόπτης μπορεί να λειτουργήσει με πολλαπλές παραγωγών, σε αυτή την περίπτωση δεν χρειάζεται κλειδαριές.[13]

Το όφελος του διασπαστή του σχεδίου είναι ότι καθιστά ευκολότερο για τους καταναλωτές να καλύψουν γρήγορα αν είναι να εκτελέσετε σε ένα πρόβλημα και να πέσει πίσω. Αν το unmarshaler έχει ένα πρόβλημα κατά την επεξεργασία στην υποδοχή 15 και επιστρέφει όταν ο δέκτης είναι σε slot 31, μπορεί να διαβάσει τα δεδομένα από τις υποδοχές 16-30 σε μία παρτίδα να τα πούμε. Αυτή η παρτίδα διαβάσει τα δεδομένα από το διασπαστή καθιστά ευκολότερο για τις καθυστερημένες καταναλωτές να καλύψουν γρήγορα, μειώνοντας έτσι τη συνολική καθυστέρηση.

Έχω περιγράψει τα πράγματα εδώ, με κάθε ένα από τα journaler, αντιγραφέας, και unmarshaler – αυτό, πράγματι, είναι ό, τι LMAX. Αλλά το σχέδιο θα επιτρέψει σε πολλές από αυτές τις συνιστώσες για να τρέξει. Εάν εκτελέσατε δύο journalers τότε θα ακόμη και κουλοχέρηδες και άλλα journaler θα πάρει τις μονές υποδοχές. Αυτό επιτρέπει την περαιτέρω συνταύτιση από αυτές τις λειτουργίες εισόδου / εξόδου εάν αυτό καταστεί απαραίτητο.

Το buffer δακτυλίου είναι μεγάλες: 20 εκατομμύρια υποδοχές για buffer εισόδου και 4 εκατομμύρια υποδοχές για κάθε ένα από τα output buffer. Η ακολουθία μετρητές είναι 64bit long ακέραιοι που αυξάνουν μονότονα ακόμη και ως το δαχτυλίδι slots περιτύλιγμα.[14] Το ρυθμιστικό έχει ρυθμιστεί σε ένα μέγεθος που είναι δύναμη του δύο, ώστε ο compiler να κάνει μια αποτελεσματική συντελεστής λειτουργίας σε χάρτη από την ακολουθία αριθμό μετρητή για τον αριθμό υποδοχής. Όπως και το υπόλοιπο σύστημα, οι ταραξίες είναι ακάλυπτη όλη τη νύχτα. Αυτό το bounce γίνεται κυρίως για να σκουπίσετε τη μνήμη έτσι ώστε να υπάρχει μικρότερη πιθανότητα ένα ακριβό συλλογής απορριμάτων εκδήλωση κατά τη διάρκεια της διαπραγμάτευσης. (Επίσης νομίζω είναι μια καλή συνήθεια για να επανεκκίνηση τακτικά, έτσι ώστε να κάνει πρόβες πώς να το κάνουμε για καταστάσεις έκτακτης ανάγκης.)

Το journaler δουλειά του είναι να αποθηκεύουν όλα τα γεγονότα σε μια ανθεκτική μορφή, έτσι ώστε να μπορούν να αναπαραχθούν σε περίπτωση που κάτι πάει στραβά. LMAX δεν χρησιμοποιεί μια βάση δεδομένων για αυτό, το σύστημα αρχείων. Είναι ροή των γεγονότων πάνω στο δίσκο. Με σύγχρονους όρους, μηχανικοί δίσκοι είναι πολύ αργά για τυχαία πρόσβαση, αλλά πολύ γρήγορη για streaming – εξ ου και το tag line “του δίσκου είναι η νέα ταινία”.[15]

Νωρίτερα ανέφερα ότι LMAX τρέχει πολλαπλά αντίγραφα του συστήματος σε ένα σύμπλεγμα να υποστηρίξει την ταχεία ανακατεύθυνσης. Ο αντιγραφέας κρατά αυτούς τους κόμβους σε συγχρονισμό. Όλη η επικοινωνία σε LMAX χρησιμοποιεί το IP multicasting, ώστε οι πελάτες δεν χρειάζεται να ξέρεις την οποία η διεύθυνση IP είναι το κύριο κόμβο. Μόνο ο master κόμβος ακούει απευθείας εισαγωγής εκδηλώσεις και τρέχει αντιγραφέα. Ο αντιγραφέας μεταδίδει την είσοδο εκδηλώσεις για τα slave nodes. Θα πρέπει το κύριο κόμβο, έλλειψη κτύπο της καρδιάς θα πρέπει να προσέξει, άλλο κόμβο γίνεται αφέντης, ξεκινάει την επεξεργασία εισόδου γεγονότα, και αρχίζει η αντιγραφέα. Κάθε κόμβος έχει τη δική του συμβολή διακόπτης και, συνεπώς, έχει τη δική της εφημερίδα και κάνει τη δική του unmarshaling.

Ακόμα και με το IP multicasting, αναπαραγωγής εξακολουθεί να είναι απαραίτητη, διότι IP μηνύματα μπορούν να φτάσουν με διαφορετική σειρά σε διαφορετικούς κόμβους. Ο master κόμβος παρέχει μια αιτιοκρατική ακολουθία για το υπόλοιπο της επεξεργασίας.

Το unmarshaler μετατρέπει τα δεδομένα συμβάντων από το σύρμα σε ένα αντικείμενο java που μπορεί να χρησιμοποιηθεί για να κινήσει τη συμπεριφορά σχετικά με την Επιχειρηματική Λογική του Επεξεργαστή. Ως εκ τούτου, σε αντίθεση με τους άλλους καταναλωτές, πρέπει να τροποποιήσετε τα δεδομένα στον buffer δακτυλίου έτσι ώστε να μπορεί να αποθηκεύσει αυτό το unmarshaled αντικείμενο. Ο κανόνας εδώ είναι ότι οι καταναλωτές επιτρέπεται να γράψετε στο ring buffer, αλλά κάθε εγγράψιμο τομέα μπορεί να έχει μόνο μία παράλληλη καταναλωτή επιτρέπεται να γράψετε. Αυτό διατηρεί την αρχή της έχοντας μόνο ένα ενιαίο συγγραφέας. [16]

Ο διακόπτης είναι μια γενικού σκοπού συστατικό που μπορεί να χρησιμοποιηθεί έξω από το LMAX σύστημα. Συνήθως χρηματοπιστωτικές εταιρείες είναι πολύ μυστικοπαθής σχετικά με τα συστήματα, σιωπά ακόμα και για αντικείμενα που δεν είναι σχετικό με την επιχείρησή τους. Δεν έχει LMAX έχει ανοίξει σχετικά με τη συνολική αρχιτεκτονική, έχουν open-sourced ο διακόπτης κώδικα – μια πράξη που με κάνει πολύ χαρούμενο. Όχι μόνο αυτό θα επιτρέψει σε άλλους οργανισμούς να κάνουν χρήση των διασπαστών, θα επιτρέψει επίσης περισσότερο έλεγχο του ταυτοχρονισμού ιδιότητες.

Ουρές και την έλλειψη μηχανικά

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

Τα περισσότερα επιχειρηματικά συστήματα αυτές τις μέρες έχουν μια βασική αρχιτεκτονική που βασίζεται σε πολλαπλές ενεργές περιόδους λειτουργίας συντονίζονται μέσω συναλλαγών βάσης δεδομένων. Το LMAX ομάδα ήταν εξοικειωμένοι με αυτή την προσέγγιση, και την πεποίθηση ότι δεν θα λειτουργήσει για το LMAX. Η αξιολόγηση αυτή ιδρύθηκε στις εμπειρίες της Betfair – η μητρική εταιρεία που έχει συσταθεί LMAX. Η Betfair είναι ένα site στοιχημάτων που επιτρέπει στους ανθρώπους να στοιχηματίσετε σε αθλητικά γεγονότα. Χειρίζεται πολύ υψηλό όγκο κυκλοφορίας, με πολλά ισχυρισμό – αθλητικά στοιχήματα τείνουν να σκάσει γύρω από συγκεκριμένα γεγονότα. Για να κάνουν αυτό το έργο που έχουν ένα από τα πιο hot βάση δεδομένων των εγκαταστάσεων γύρω μου και έπρεπε να κάνω πολλές αφύσικες πράξεις, προκειμένου να το κάνει να δουλέψει. Με βάση αυτή την εμπειρία ήξεραν πόσο δύσκολο ήταν να διατηρηθεί η Betfair απόδοση του και ήταν σίγουρος ότι αυτό το είδος της αρχιτεκτονικής δεν θα λειτουργήσει για το πολύ χαμηλό latency ότι ένα site θα απαιτήσει. Ως αποτέλεσμα, έπρεπε να βρουν μια διαφορετική προσέγγιση.

Η αρχική τους προσέγγιση ήταν να ακολουθήσει αυτό που πολλοί λένε ότι αυτές τις μέρες – για να πάρετε την υψηλή απόδοση που χρειάζεστε για να χρησιμοποιήσετε ρητή συνταύτισης. Για αυτό το σενάριο, αυτό σημαίνει ότι οι παραγγελίες να υποβάλλονται σε επεξεργασία από πολλαπλά νήματα ταυτόχρονα. Ωστόσο, όπως είναι συχνά η περίπτωση με τη συνταύτιση, η δυσκολία έρχεται, επειδή αυτά τα θέματα πρέπει να επικοινωνούν το ένα με το άλλο. Επεξεργασία παραγγελίας αλλαγές συνθήκες της αγοράς και οι συνθήκες αυτές πρέπει να κοινοποιούνται.

Η προσέγγιση θα διερευνηθεί από νωρίς ήταν η Ηθοποιός, μοντέλο και τον ξάδελφό του SEDA. Ο Ηθοποιός, μοντέλο βασίζεται σε ανεξάρτητη, ενεργό αντικείμενα με το δικό τους νήμα που επικοινωνούν μεταξύ τους μέσω ουρές. Πολλοί άνθρωποι βρίσκουν αυτό το είδος της συνταύτισης μοντέλο πολύ πιο εύκολα από ό, τι προσπαθεί να κάνει κάτι με βάση το κλείδωμα αρχέτυπα.

Η ομάδα έχτισε ένα πρωτότυπο exchange χρησιμοποιώντας το μοντέλο ηθοποιός και έκανε δοκιμές απόδοσης. Αυτό που βρήκαν ήταν ότι οι επεξεργαστές περάσει περισσότερο χρόνο στη διαχείριση ουρές από την πραγματική λογική της εφαρμογής. Ουρά πρόσβαση ήταν ένα εμπόδιο.

Όταν πιέζει απόδοση, όπως αυτή, αρχίζει να γίνεται σημαντικό να ληφθεί υπόψη ο τρόπος με σύγχρονο υλικό είναι κατασκευασμένο. Η φράση του Μάρτιν Τόμσον αρέσει να είναι “μηχανικά”. Ο όρος προέρχεται από το αγωνιστικό αυτοκίνητο οδήγηση και αντανακλά τον οδηγό που έχει μια έμφυτη αίσθηση για το αυτοκίνητο, έτσι ώστε να είναι σε θέση να αισθάνονται πώς να πάρει το καλύτερο από αυτό. Πολλοί προγραμματιστές, και ομολογώ ότι δεν εμπίπτουν σε αυτό το στρατόπεδο, δεν έχουν πολλά μηχανικά για το πώς προγραμματισμού αλληλεπιδρά με το υλικό. Τι είναι χειρότερο είναι ότι πολλοί προγραμματιστές έχουν μηχανικά, αλλά είναι χτισμένο σε αντιλήψεις για το πώς το υλικό που χρησιμοποιείται για την εργασία που είναι τώρα και πολλά χρόνια από την ημερομηνία.

Ένα από τα κυρίαρχα στοιχεία με σύγχρονες CPUs που επηρεάζει λανθάνουσα κατάσταση, είναι πως η CPU αλληλεπιδρά με τη μνήμη. Αυτές τις μέρες θα τα κύρια μνήμη είναι μια πολύ αργή λειτουργία σε CPU-όρους. Επεξεργαστές έχουν πολλαπλά επίπεδα cache, καθένα από τα οποία είναι σημαντικά πιο γρήγορα. Έτσι, για να αυξήσετε την ταχύτητα που θέλετε να πάρετε τον κωδικό σας και τα δεδομένα σε αυτές τις κρύπτες.

Σε ένα πρώτο επίπεδο, ο ηθοποιός, μοντέλο βοηθά εδώ. Μπορείτε να σκεφτείτε έναν ηθοποιό ως δικό του αντικείμενο που συμπλέγματα κώδικα και δεδομένων, η οποία είναι μια φυσική μονάδα για την προσωρινή αποθήκευση. Αλλά οι ηθοποιοί πρέπει να επικοινωνούν, κάτι που το κάνουν μέσω ουρές – και το LMAX ομάδα παρατήρησε ότι οι ουρές που παρεμβαίνουν με την προσωρινή αποθήκευση.

Η εξήγηση τρέχει σαν αυτό: για να βάλει κάποια δεδομένα σε μια ουρά, θα πρέπει να γράψετε σε αυτήν την ουρά. Ομοίως, για να λάβει τα δεδομένα από την ουρά, θα πρέπει να γράψετε στην ουρά για να εκτελέσει την αφαίρεση. Αυτό είναι να γράψετε contention περισσότερους από έναν πελάτη μπορεί να χρειαστεί να γράψετε την ίδια δομή δεδομένων. Να ασχοληθεί με το γράψω έριδος μια ουρά συχνά χρησιμοποιεί κλειδαριές. Αλλά αν μια κλειδαριά έχει χρησιμοποιηθεί, που μπορεί να προκαλέσει ένα πλαίσιο διακόπτη στον πυρήνα. Όταν συμβεί αυτό, ο επεξεργαστής που εμπλέκονται είναι πιθανό να χάσετε τα δεδομένα στην cache.

Το συμπέρασμα που βγήκε ήταν ότι για να πάρει το καλύτερο caching συμπεριφορά, χρειάζεστε ένα σχέδιο που έχει μόνο έναν πυρήνα γράψιμο σε οποιαδήποτε θέση μνήμης[17]. Πολλαπλές αναγνώστες είναι μια χαρά, επεξεργαστές χρησιμοποιούν συχνά ειδικές συνδέσεις υψηλής ταχύτητας μεταξύ τους κρύπτες. Όμως ουρές αποτυγχάνουν το ένα-συγγραφέας αρχή.

Η ανάλυση αυτή οδήγησε το LMAX ομάδα σε δυο συμπεράσματα. Πρώτον, οδήγησε στο σχεδιασμό του διασπαστή, η οποία αποφασιστικά ακολουθεί το single-writer περιορισμό. Δεύτερον, οδήγησε στην ιδέα της εξερεύνησης του single-threaded επιχειρηματική λογική προσέγγιση, ζητώντας από το ερώτημα του πόσο γρήγορα ένα νήμα μπορεί να πάει, αν είναι να ελευθερωθεί από συνταύτιση διαχείρισης.

Η ουσία της εργασίας σε ένα ενιαίο νήμα, είναι να βεβαιωθείτε ότι έχετε ένα νήμα που εκτελείται σε έναν πυρήνα, το αποθηκεύει προσωρινά ζεσταθεί, και πρόσβαση στη μνήμη όσο το δυνατόν πηγαίνει στο κρύπτες και όχι στην κύρια μνήμη. Αυτό σημαίνει ότι τόσο ο κώδικας και το σύνολο των δεδομένων πρέπει να είναι όσο συνέπεια να προσεγγιστεί όσο το δυνατόν. Επίσης, κρατώντας μικρά αντικείμενα με τον κώδικα και τα δεδομένα μαζί τους επιτρέπει να ανταλλαχθούν μεταξύ των caches ως μονάδα, απλοποιώντας τη διαχείριση της μνήμης cache και πάλι τη βελτίωση της απόδοσης.

Ένα ουσιαστικό μέρος της η διαδρομή προς το LMAX αρχιτεκτονική ήταν η χρήση της δοκιμής απόδοσης. Την εξέταση και την εγκατάλειψη των ηθοποιός προσέγγιση που βασίζεται ήρθε από το κτίριο και τον έλεγχο της απόδοσης του πρωτοτύπου. Ομοίως, πολλά από τα βήματα για τη βελτίωση της απόδοσης των διαφόρων τμημάτων ήταν ενεργοποιημένη από δοκιμές επιδόσεων. Μηχανικά είναι πολύ πολύτιμη – βοηθά να διαμορφώσει υποθέσεις για το τι βελτιώσεις που μπορείτε να κάνετε, και σας καθοδηγεί για βήματα προς τα εμπρός και όχι προς τα πίσω – αλλά στο τέλος, είναι η δοκιμή σας δίνει τη πειστικά αποδεικτικά στοιχεία.

Τον έλεγχο της απόδοσης σε αυτό το ύφος, ωστόσο, δεν είναι κατανοητό το θέμα. Τακτικά το LMAX ομάδα τονίζει ότι έρχεται με σημαντικές επιδόσεις δοκιμές είναι συχνά πιο δύσκολο από ό, αναπτύσσοντας την παραγωγή κώδικα. Και πάλι μηχανικά είναι σημαντική για την ανάπτυξη των κατάλληλων δοκιμών. Δοκιμή χαμηλό επίπεδο συνταύτιση συστατικό είναι χωρίς νόημα, αν ληφθεί υπόψη το caching συμπεριφορά της CPU.

Το συγκεκριμένο μάθημα είναι η σημασία της γραφής δοκιμές κατά null τμήματα για να εξασφαλίσουμε την απόδοση της δοκιμής είναι αρκετά γρήγορος για να μετρήσουμε πραγματικά στοιχεία. Γράφω γρήγορα δοκιμής κώδικας είναι πιο εύκολο από το να γράφω γρήγορα παραγωγής κώδικα και είναι πολύ εύκολο να πάρει ψευδή αποτελέσματα, επειδή η δοκιμή δεν είναι τόσο γρήγορα όσο το συστατικό που προσπαθεί να μετρήσει.

Θα πρέπει να χρησιμοποιείτε αυτή την αρχιτεκτονική;

Με την πρώτη ματιά, αυτή η αρχιτεκτονική φαίνεται να είναι για μια πολύ μικρή θέση. Μετά από όλα, ο οδηγός που οδήγησαν σε αυτό ήταν να είναι σε θέση να εκτελέσετε πολλές πολύπλοκες συναλλαγές με πολύ χαμηλή καθυστέρηση – οι περισσότερες εφαρμογές δεν χρειάζεται να τρέχει σε 6 εκατ. ευρώ TPS.

Αλλά αυτό που με συναρπάζει σχετικά με αυτή την εφαρμογή, είναι ότι έχουν καταλήξει σε ένα σχέδιο το οποίο αφαιρεί μεγάλο μέρος του προγραμματισμού πολυπλοκότητα που μαστίζει πολλά έργα λογισμικού. Το παραδοσιακό μοντέλο των ταυτόχρονων συνεδριών γύρω συναλλαγών της βάσης δεδομένων δεν είναι χωρίς προβλήματα. Συνήθως υπάρχει μια μη τετριμμένη προσπάθεια που πηγαίνει σε σχέση με τη βάση δεδομένων. Object/relational mapping tools μπορεί να βοηθήσει πολύ τον πόνο του να κάνουμε με μια βάση δεδομένων, αλλά δεν έχει ασχοληθεί με όλα αυτά. Πιο ρύθμιση της απόδοσης των εφαρμογών μιας επιχείρησης περιλαμβάνει τριγυρίζεις με SQL.

Αυτές τις μέρες, μπορείτε να πάρετε περισσότερες κύρια μνήμη σε διακομιστές σας από το παλιό παιδιά θα μπορούσε να πάρει ως χώρο στο δίσκο. Όλο και περισσότερες εφαρμογές είναι αρκετά ικανή να βάλει όλο τους το σύνολο της εργασίας στην κύρια μνήμη – εξαλείφοντας έτσι μια πηγή τόσο την πολυπλοκότητα και τη νωθρότητα. Εκδήλωση Προμήθεια παρέχει έναν τρόπο για να λύσει την αντοχή πρόβλημα για ένα σύστημα μνήμης, το τρέξιμο, όλα σε ένα ενιαίο νήμα λύνει το συνταύτιση ζήτημα. Το LMAX η εμπειρία δείχνει ότι όσο πρέπει λιγότερο από μερικά εκατομμύρια TPS, θα έχετε αρκετή απόδοση headroom.

Υπάρχει σηκαντική επικάλυψη εδώ με το αυξανόμενο ενδιαφέρον για CQRS. Μια εκδήλωση που προέρχονται, στη μνήμη του επεξεργαστή είναι μια φυσική επιλογή για την εντολή πλευρά του CQRS σύστημα. (Αν και το LMAX ομάδα δεν έχει επί του παρόντος χρήση CQRS.)

Έτσι, αυτό υποδεικνύει ότι δεν πρέπει να πάει αυτό το μονοπάτι; Αυτό είναι πάντα μια δύσκολη ερωτήσεις για το ελάχιστα γνωστό τεχνικές όπως αυτή, δεδομένου ότι το επάγγελμα χρειάζεται περισσότερο χρόνο για να εξερευνήσετε τα όρια. Ένα σημείο εκκίνησης, ωστόσο, είναι να σκεφτείτε τα χαρακτηριστικά που ενθαρρύνουν την αρχιτεκτονική.

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

LMAX επικεντρώνεται στην υπολογίζοντας τις συνέπειες του πώς τα γεγονότα αλλάξει τον κόσμο. Πολλές περιοχές βρίσκονται περισσότερα σχετικά με τη λήψη ένα υπάρχον κατάστημα των πληροφοριών και δίνει διάφορους συνδυασμούς των πληροφοριών για όσες μάτια όσο μπορούν να βρουν – π. χ. ότι κάθε χώρο των μέσων ενημέρωσης. Εδώ η αρχιτεκτονική πρόκληση κέντρα συχνά για να πάρει το αποθηκεύει σωστά.

Ένα άλλο χαρακτηριστικό του LMAX είναι ότι αυτό είναι ένα backend σύστημα, οπότε είναι λογικό να εξετάσουμε πώς εφαρμόζεται αυτό θα ήταν κάτι που ενεργούν σε ένα διαδραστικό τρόπο. Όλο και περισσότερο web εφαρμογή μας βοηθούν να πάρουμε χρησιμοποιείται για server συστήματα που ανταποκρίνονται σε αιτήματα, μια πτυχή που δεν ταιριάζουν με την αρχιτεκτονική αυτή. Όπου αυτή η αρχιτεκτονική πηγαίνει περαιτέρω από τα περισσότερα τέτοια συστήματα είναι η απόλυτη χρήση της ασύγχρονης επικοινωνίας, με αποτέλεσμα οι αλλαγές στο μοντέλο προγραμματισμού που ανέφερα νωρίτερα.

Οι αλλαγές αυτές θα χρειαστεί κάποιος να συνηθίσει για τις περισσότερες ομάδες. Οι περισσότεροι άνθρωποι τείνουν να πιστεύουν προγραμματισμού σε σύγχρονη άποψη και δεν χρησιμοποιούνται για την αντιμετώπιση asynchrony. Ακόμα καιρό έχει αλήθεια ότι η ασύγχρονη επικοινωνία είναι ένα ουσιαστικό εργαλείο για την ανταπόκριση. Θα είναι ενδιαφέρον να δούμε αν η ευρύτερη χρήση της ασύγχρονης επικοινωνίας στην javascript κόσμο, με τον ΆΓΙΑΞ και node.js θα ενθαρρύνει περισσότερους ανθρώπους να διερευνήσει αυτό το στυλ. Το LMAX ομάδα βρήκε ότι ενώ χρειάστηκε λίγο χρόνο για να προσαρμοστούν σε ασύγχρονη στυλ, έγινε σύντομα φυσικό και συχνά πιο εύκολο. Ειδικότερα χειρισμό σφαλμάτων ήταν πολύ πιο εύκολο να ασχοληθεί με αυτή την προσέγγιση.

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

Προσωπικά, αυτό το βρίσκω μια πολύ συναρπαστική ιστορία. Πολύ μου στόχος είναι να επικεντρωθεί σχετικά με το λογισμικό που μοντέλα συγκρότημα τομείς. Μια τέτοια αρχιτεκτονική παρέχει καλή διαχωρισμός των ανησυχιών, επιτρέποντας στους ανθρώπους να επικεντρωθεί σε Τομέα με Γνώμονα το Σχεδιασμό και την τήρηση πολύ από την πλατφόρμα πολυπλοκότητα καλά διαχωρισμένα. Η στενή σύζευξη μεταξύ αντικείμενα του τομέα και των βάσεων δεδομένων έχει πάντα μια ενόχληση – προσεγγίσεις, όπως αυτή προτείνει μια διέξοδο.

Αρχικά στο http://martinfowler.com/articles/lmax.html