Παραδοσιακά, ένα σύστημα που χειρίζεται ένα δισεκατομμύριο συναλλαγές την ημέρα θα μπορούσε να απαιτεί εκατοντάδες VM, το PayPal τα κάνει όλα με μόλις 8 VM και παρέχει γρήγορη απόκριση με 90% χρήση CPU, μια πυκνότητα συναλλαγών που το PayPal δεν έχει επιτύχει ποτέ στο παρελθόν και η διαδικασία απαιτεί το 1/10 του χρόνου για να επιτευχθεί η διαδικασία, βοηθώντας τον οργανισμό να συμβαδίσει με την ανάπτυξη χωρίς να χρειάζεται να κλιμακώσει την υπολογιστική του υποδομή μειώνοντας παράλληλα το κόστος. Πώς γίνεται αυτό;
Το PayPal μετέφερε το σύστημά του στη λειτουργία Actor που βασίζεται στην Akka. Στο άρθρο Squbs: Το PayPal ακολουθεί μια νέα αντιδραστική προσέγγιση για τη δημιουργία εφαρμογών (Η σύνδεση με υπερσύνδεσμο είναι ορατή.Το PayPal εξηγεί τις λεπτομέρειες της διαδικασίας. Τώρα έχουν ανοιχτού κώδικα Squbs και το δημοσίευσαν στο GitHub (Η σύνδεση με υπερσύνδεσμο είναι ορατή.)。
Όταν ένα έργο πρέπει να ακολουθήσει μια πρακτική προσέγγιση, το μοντέλο εξυπηρέτησης με κατάσταση εξακολουθεί να μην λαμβάνει αρκετή προσοχή. Για να μάθετε περισσότερα σχετικά με τις υπηρεσίες κατάστασης, συνιστούμε να διαβάσετε τους λόγους για να συνεχίσετε να δημιουργείτε επεκτάσιμες υπηρεσίες κατάστασης τώρα (Η σύνδεση με υπερσύνδεσμο είναι ορατή.), αυτό το άρθρο βασίζεται σε μια ομιλία της Caitie McCaffrey. Εάν αυτό το άρθρο δεν σας πείθει, υπάρχει επίσης το WhatsApp που χρησιμοποιεί τον ανταγωνιστή της Akka Erlang για εξαιρετικά υψηλή απόδοση: Η αρχιτεκτονική WhatsApp του Facebook αξίας 19 δισεκατομμυρίων δολαρίων (Η σύνδεση με υπερσύνδεσμο είναι ορατή.)。
Ο λόγος για τη σύσταση του παραπάνω άρθρου είναι ότι το PayPal δεν παρέχει λεπτομερή εισαγωγή στην αρχιτεκτονική, αλλά αφιερώνει περισσότερο χρόνο στους λόγους για τους οποίους επέλεξαν το Akka και στα οφέλη της μετάβασης στο Akka. Αλλά αυτό το άρθρο εξακολουθεί να παρέχει πολύτιμη ενθάρρυνση και επίδειξη για την πρακτική του «ξεφεύγοντας από την πεπατημένη».
Τι είναι λάθος με τη χρήση μεγάλου αριθμού εικονικών μηχανών για μια υπηρεσία;
- Εκτελέστε την υπηρεσία με πολύ χαμηλής απόδοσης, εξαιρετικά μικρές εικονικές μηχανές. Το μεγαλύτερο πλεονέκτημα των αντιδραστικών συστημάτων που βασίζονται σε ηθοποιούς είναι ότι μπορούν να κάνουν πιο αποτελεσματική χρήση των υπολογιστικών πόρων, γεγονός που μπορεί να μειώσει σημαντικά το μέγεθος του συστήματος και να αποφύγει την «απλή και ακατέργαστη» αυτόματη κλιμάκωση των παραδοσιακών πρακτικών.
- Επιβαρύνει πολύ το δίκτυό σας και την υποδομή δρομολόγησης. Καθώς οι υπηρεσίες τείνουν να είναι πιο διασυνδεδεμένες, τα αιτήματα μπορεί να χρειαστεί να περάσουν από μεγάλο αριθμό αναπηδήσεων δικτύου, γεγονός που αυξάνει τον λανθάνοντα χρόνο και υποβαθμίζει την εμπειρία του χρήστη.
- Όσο μεγαλύτερο είναι, τόσο πιο ακριβό είναι. Οι υπηρεσίες με εκατοντάδες εικονικές μηχανές έχουν υψηλό εγγενές κόστος όσον αφορά τη διαχείριση, την παρακολούθηση και την αναποτελεσματική προσωρινή αποθήκευση.
- Όσο μικρότερο είναι, τόσο πιο ευκίνητο είναι. Η ανάπτυξη υπηρεσιών σε εκατοντάδες εικονικές μηχανές είναι μια χρονοβόρα διαδικασία.
- Αξιοποιήστε περισσότερο περισσότερη CPU σε κάθε εικονική μηχανή. Δεδομένου ότι οι CPU δεν μπορούν να επιταχυνθούν περαιτέρω, η υποδομή πρέπει να μπορεί να κάνει πιο αποτελεσματική χρήση περισσότερων CPU σε κάθε εικονική μηχανή.
- Οι μικροϋπηρεσίες πρέπει να δημιουργηθούν με χαλαρά συνδεδεμένες NanoServices που είναι εύκολο να συντηρηθούν και να κατασκευαστούν γρήγορα. Κανείς δεν θέλει να ασχοληθεί με ένα πολύπλοκο σύστημα με πολλά επίπεδα και χρειάζεστε περισσότερη ορατότητα στο ρόλο των διαφορετικών υπηρεσιών χωρίς να χρειάζεται να εμβαθύνετε σε επίπεδα κώδικα.
Έχοντας υπόψη αυτούς τους παράγοντες, το PayPal ήθελε να δημιουργήσει ένα σύστημα που:
- Επεκτάσιμο, όχι μόνο για οριζόντια κλιμάκωση σε εκατοντάδες κόμβους, αλλά και για κλιμάκωση σε περισσότερους επεξεργαστές για την επίτευξη του στόχου της επεξεργασίας δισεκατομμυρίων αιτημάτων την ημέρα.
- Χαμηλή καθυστέρηση και μπορεί να ελεγχθεί με εξαιρετικά λεπτή ευαισθησία.
- Να είστε ανθεκτικοί απέναντι στις αποτυχίες.
- Ευέλικτη προσαρμογή των ορίων εξυπηρέτησης.
- Προωθήστε την επεκτασιμότητα και την απλότητα μέσω μοντέλων προγραμματισμού και κουλτούρας, καθώς και απλούστερων μηχανισμών χειρισμού σφαλμάτων και σφαλμάτων.
Δεν υπάρχει αμφιβολία ότι το PayPal θέλει να χρησιμοποιήσει μια πιο «λεπτή» στοίβα και δεν θέλει η στοίβα του να περιέχει πολλή τεχνολογία και κινούμενα μέρη σε διαφορετικά επίπεδα. Γενικά, το Akka και τα κρατικά συστήματα είναι κατάλληλα για αυτήν την ανάγκη, γεγονός που επιτρέπει στη στοίβα μεγάλων εξαρτημάτων να «σπάσει» σε μια ενιαία τεχνολογία. Το PayPal επέλεξε το Akka έναντι του Erlang επειδή έχει μεγαλύτερη εμπειρία με την Java, η οποία τρέχει πάνω από την Java. Για πολλούς ανθρώπους, η εκμάθηση της Erlang από την αρχή δεν είναι ρεαλιστική.
Με το Akka μπορούν:
- Γράψτε κώδικα που είναι πιο εύκολο να εξηγηθεί
- Γράψτε κώδικα που είναι πιο εύκολο να δοκιμαστεί
- Τα σενάρια σφαλμάτων και αποτυχίας αντιμετωπίζονται πιο φυσικά από τις παραδοσιακές λειτουργίες χρησιμοποιώντας το JVM
- Γράψτε ταχύτερο, πιο ανθεκτικό και απλούστερο κώδικα για να χειρίζεστε τα σφάλματα με μεγαλύτερη ευχέρεια και να μειώσετε τον αριθμό των σφαλμάτων
Το PayPal έγραψε αμέσως το δικό του πλαίσιο βασισμένο στο Akka, το οποίο ονομαζόταν Squbs, το οποίο χρησιμοποιήθηκε για ομοιοκαταληξία με το "Cubes". Αυτό σας επιτρέπει να δημιουργήσετε ένα αρθρωτό επίπεδο τεχνολογίας για την κατασκευή μιας NanoService που ονομάζεται "Cube". Οι κύβοι είναι συμμετρικοί και οι εξαρτήσεις μεταξύ διαφορετικών κύβων είναι επίσης συμμετρικές και χαλαρές, εκθέτοντας μόνο τις διεπαφές μηνυμάτων που ήδη παρέχει το Akka.
Περιγράφει επίσης τις δυσκολίες που μπορεί να αντιμετωπίσουν οι προγραμματιστές κατά την υιοθέτηση του κώδικα AKKA, καθώς μπορεί επίσης να χρειαστεί να προσλάβετε κάποιον εκπαιδευμένο στο Akka/Scala.
Δεδομένου ότι οι περισσότερες υπηρεσίες έχουν παρόμοιους σκοπούς: λήψη αιτημάτων, κλήση και ανάγνωση και εγγραφή βάσεων δεδομένων, κλήση άλλων υπηρεσιών, κλήση μηχανών κανόνων, λήψη δεδομένων από κρυφές μνήμες, εγγραφή σε κρυφές μνήμες... Ως αποτέλεσμα, οι υπηρεσίες μπορούν να αφαιρεθούν μέσω μοτίβων όπως το μοτίβο Orchestrator και η διαρκής ροή.
Το Squbs έχει γίνει μια συνήθης πρακτική για το PayPal να δημιουργεί αντιδραστικές εφαρμογές με βάση το Akka. Εάν η ομάδα σας δεν έχει σκεφτεί ακόμα τα stateful συστήματα, μάλλον αξίζει να το δοκιμάσετε, καθώς λειτουργεί καλά στο PayPal, το Facebook, το Uber και τη Microsoft.
|