Το SmugMug λειτουργεί δύο πολύ μεγάλες διαδικτυακές πλατφόρμες φωτογραφιών, SmugMug και flickr, δίνοντας τη δυνατότητα σε περισσότερους από 100 εκατομμύρια πελάτες να αποθηκεύουν, να αναζητούν, να μοιράζονται και να πουλούν με ασφάλεια δεκάδες δισεκατομμύρια φωτογραφίες. Οι πελάτες που ανεβάζουν και αναζητούν φωτογραφίες δεκαετιών βοήθησαν να μετατραπεί η αναζήτηση σε κρίσιμη υποδομή, αυξάνοντας σταθερά από τότε που χρησιμοποιήθηκε για πρώτη φορά το SmugMug Amazon CloudSearch το 2012, ακολουθούμενο από Amazon OpenSearch Service από το 2018, αφού έφτασε σε δισεκατομμύρια έγγραφα και terabyte αποθήκευσης αναζήτησης.
Εδώ, ο Lee Shepherd, SmugMug Staff Engineer, μοιράζεται την αρχιτεκτονική αναζήτησης του SmugMug που χρησιμοποιείται για τη δημοσίευση, τη συμπλήρωση και τον καθρέφτη ζωντανής κίνησης σε πολλαπλά συμπλέγματα. Το SmugMug χρησιμοποιεί αυτούς τους αγωγούς για συγκριτική αξιολόγηση, επικύρωση και μετεγκατάσταση σε νέες διαμορφώσεις, συμπεριλαμβανομένων παρουσιών r6gd.2xlarge που βασίζονται στο Graviton από το i3.2xlarge, μαζί με δοκιμές Amazon OpenSearch χωρίς διακομιστή. Καλύπτουμε τρεις αγωγούς που χρησιμοποιούνται για δημοσίευση, συμπλήρωση και ερωτήματα χωρίς να εισάγουμε αιχμηρά μη ρεαλιστικά μοτίβα κυκλοφορίας και χωρίς καμία επίδραση στις υπηρεσίες παραγωγής.
Υπάρχουν δύο κύρια αρχιτεκτονικά κομμάτια που είναι κρίσιμα για τη διαδικασία:
- Μια διαρκής πηγή αλήθειας για δεδομένα ευρετηρίου. Είναι η καλύτερη πρακτική και μέρος της στρατηγικής μας για τη δημιουργία αντιγράφων ασφαλείας για να έχουμε ένα ανθεκτικό κατάστημα πέρα από το ευρετήριο OpenSearch, και Amazon DynamoDB παρέχει επεκτασιμότητα και ενοποίηση με AWS Lambda που απλοποιεί σε μεγάλο βαθμό τη διαδικασία. Χρησιμοποιούμε το DynamoDB για άλλες υπηρεσίες χωρίς αναζήτηση, οπότε αυτό ήταν φυσικό.
- Μια συνάρτηση Lambda για τη δημοσίευση δεδομένων από την πηγή της αλήθειας στο OpenSearch. Χρησιμοποιώντας ψευδώνυμα συνάρτησης βοηθά στην εκτέλεση πολλών διαμορφώσεων της ίδιας λειτουργίας Lambda ταυτόχρονα και είναι το κλειδί για τη διατήρηση των δεδομένων σε συγχρονισμό.
Δημοσιεύσεις
Η διοχέτευση δημοσίευσης βασίζεται σε συμβάντα όπως ο χρήστης που εισάγει λέξεις-κλειδιά ή υπότιτλους, νέες μεταφορτώσεις ή ανίχνευση ετικετών μέσω Αναγνώριση Amazon. Αυτά τα συμβάντα υποβάλλονται σε επεξεργασία, συνδυάζοντας δεδομένα από μερικά άλλα καταστήματα περιουσιακών στοιχείων όπως Amazon Aurora MySQL Compatible Edition και Υπηρεσία απλής αποθήκευσης Amazon (Amazon S3), πριν γράψετε ένα μεμονωμένο στοιχείο στο DynamoDB.
Η εγγραφή στο DynamoDB καλεί μια λειτουργία δημοσίευσης Λάμδα, μέσω του Προσαρμογέας Kinesis DynamoDB Streams, που παίρνει μια παρτίδα ενημερωμένων στοιχείων από το DynamoDB και τα ευρετηριάζει στο OpenSearch. Υπάρχουν άλλα πλεονεκτήματα από τη χρήση του προσαρμογέα DynamoDB Streams Kinesis, όπως η μείωση του αριθμού των απαιτούμενων ταυτόχρονων λάμδα.
Η συνάρτηση Lambda δημοσίευσης χρησιμοποιεί μεταβλητές περιβάλλοντος για να καθορίσει σε ποιον τομέα και ευρετήριο OpenSearch θα δημοσιευτεί. Ένα ψευδώνυμο παραγωγής έχει ρυθμιστεί για εγγραφή στον τομέα παραγωγής OpenSearch, εκτός του πίνακα DynamoDB ή του Kinesis Stream
Κατά τη δοκιμή νέων διαμορφώσεων ή τη μετεγκατάσταση, ένα ψευδώνυμο μετεγκατάστασης διαμορφώνεται για εγγραφή στον νέο τομέα OpenSearch, αλλά χρησιμοποιεί τον ίδιο κανόνα ετικέτας με το ψευδώνυμο παραγωγής. Αυτό επιτρέπει τη διπλή ευρετηρίαση δεδομένων και στους δύο τομείς της Υπηρεσίας OpenSearch ταυτόχρονα.
Ακολουθεί ένα παράδειγμα του σχήματος πίνακα DynamoDB:
Η τιμή "LastUpdated" χρησιμοποιείται ως έκδοση εγγράφου κατά την ευρετηρίαση, επιτρέποντας στο OpenSearch να απορρίπτει τυχόν ενημερώσεις εκτός σειράς.
Συμπλήρωση
Τώρα που δημοσιεύονται αλλαγές και στους δύο τομείς, ο νέος τομέας (ευρετήριο) πρέπει να συμπληρωθεί με δεδομένα ιστορικού. Για να συμπληρώσετε ένα ευρετήριο που δημιουργήθηκε πρόσφατα, ένας συνδυασμός Υπηρεσία απλής ουράς Amazon (Amazon SQS) και χρησιμοποιείται DynamoDB. Ένα σενάριο συμπληρώνει μια ουρά SQS με μηνύματα που περιέχουν οδηγίες για παράλληλη σάρωση ένα τμήμα του πίνακα DynamoDB.
Η ουρά SQS εκκινεί μια συνάρτηση Lambda που διαβάζει τις οδηγίες του μηνύματος, ανακτά μια δέσμη στοιχείων από το αντίστοιχο τμήμα του πίνακα DynamoDB και τα εγγράφει σε ένα ευρετήριο OpenSearch. Νέα μηνύματα γράφονται στην ουρά SQS για να παρακολουθείτε την πρόοδο στο τμήμα. Μετά την ολοκλήρωση του τμήματος, δεν γράφονται άλλα μηνύματα στην ουρά SQS και η διαδικασία σταματά από μόνη της.
Η συγχρονικότητα καθορίζεται από τον αριθμό των τμημάτων, με πρόσθετους ελέγχους που παρέχονται από την κλιμάκωση ταυτόχρονης λάμδα. Το SmugMug είναι σε θέση να ευρετηριάσει περισσότερα από 1 δισεκατομμύριο έγγραφα ανά ώρα στη διαμόρφωση OpenSearch, ενώ έχει μηδενικό αντίκτυπο στον τομέα παραγωγής.
Ένα σενάριο που βασίζεται στο NodeJS AWS-SDK χρησιμοποιείται για τη δημιουργία της ουράς SQS. Ακολουθεί ένα απόσπασμα των επιλογών του σεναρίου διαμόρφωσης SQS:
Μαζί με τη μορφή του μηνύματος SQS που προκύπτει:
Mirroring
Τελευταίο, το δικό μας αντικατοπτρισμένο ερώτημα αναζήτησης τα αποτελέσματα εκτελούνται με την αποστολή ενός ερωτήματος OpenSearch σε μια ουρά SQS, εκτός από τον τομέα παραγωγής μας. Η ουρά SQS εκκινεί μια συνάρτηση Lambda που αναπαράγει ξανά το ερώτημα στον τομέα αντιγραφής. Τα αποτελέσματα αναζήτησης από αυτά τα αιτήματα δεν αποστέλλονται σε κανέναν χρήστη, αλλά επιτρέπουν την αναπαραγωγή του φόρτου παραγωγής στην υπό δοκιμή υπηρεσία OpenSearch χωρίς επιπτώσεις στα συστήματα παραγωγής ή στους πελάτες.
Συμπέρασμα
Κατά την αξιολόγηση ενός νέου τομέα ή διαμόρφωσης OpenSearch, οι κύριες μετρήσεις που μας ενδιαφέρουν είναι η απόδοση του λανθάνοντος χρόνου ερωτήματος, δηλαδή οι λανθάνοντες χρόνοι που λαμβάνονται (λανθάνοντες χρόνοι ανά χρόνο) και, κυρίως, οι καθυστερήσεις για αναζήτηση. Στη μετακίνησή μας στο Graviton R6gd, είδαμε περίπου 40 τοις εκατό χαμηλότερες καθυστερήσεις P50-P99, μαζί με παρόμοια κέρδη στη χρήση της CPU σε σύγκριση με το i3 (αγνοώντας το χαμηλότερο κόστος του Graviton). Ένα άλλο ευπρόσδεκτο πλεονέκτημα ήταν η πιο προβλέψιμη και παρακολουθήσιμη πίεση μνήμης JVM με τις αλλαγές στη συλλογή σκουπιδιών από την προσθήκη του G1GC στο R6gd και σε άλλες νέες περιπτώσεις.
Χρησιμοποιώντας αυτόν τον αγωγό, δοκιμάζουμε επίσης το OpenSearch Serverless και βρίσκουμε τις καλύτερες περιπτώσεις χρήσης του. Είμαστε ενθουσιασμένοι με αυτήν την υπηρεσία και σκοπεύουμε πλήρως να έχουμε εγκαίρως μια αρχιτεκτονική εντελώς χωρίς διακομιστή. Μείνετε συντονισμένοι για αποτελέσματα.
Σχετικά με τους Συγγραφείς
Λι Σέπερντ είναι Μηχανικός Λογισμικού Προσωπικού SmugMug
Αϊντν Μπεκίροφ είναι κύριος τεχνικός διαχειριστής λογαριασμών υπηρεσιών Web της Amazon
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoData.Network Vertical Generative Ai. Ενδυναμώστε τον εαυτό σας. Πρόσβαση εδώ.
- PlatoAiStream. Web3 Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- PlatoESG. Ανθρακας, Cleantech, Ενέργεια, Περιβάλλον, Ηλιακός, Διαχείριση των αποβλήτων. Πρόσβαση εδώ.
- PlatoHealth. Ευφυΐα βιοτεχνολογίας και κλινικών δοκιμών. Πρόσβαση εδώ.
- πηγή: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- :είναι
- :δεν
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- Ικανός
- Σχετικα
- Λογαριασμός
- προστιθέμενη
- Επιπλέον
- Πρόσθετος
- Μετά το
- επιτρέπουν
- Επιτρέποντας
- κατά μήκος
- Επίσης
- Amazon
- Amazon υπηρεσίες Web
- an
- και
- Άλλος
- κάθε
- αρχιτεκτονική
- αρχιτεκτονική
- ΕΙΝΑΙ
- AS
- προσόν
- At
- αυγή
- AWS
- εφεδρικός
- βασίζονται
- BE
- πριν
- είναι
- αναφοράς
- όφελος
- οφέλη
- ΚΑΛΎΤΕΡΟΣ
- Πέρα
- Δισεκατομμύριο
- δισεκατομμύρια
- και οι δύο
- αλλά
- by
- λεζάντες
- Αλλαγές
- συλλογή
- συνδυασμός
- συνδυάζοντας
- σύγκριση
- σύμφωνος
- Ολοκληρώνει
- ανταγωνιστής
- διαμόρφωση
- έχει ρυθμιστεί
- περιέχουν
- ελέγχους
- Αντίστοιχος
- Δικαστικά έξοδα
- κάλυμμα
- CPU
- δημιουργήθηκε
- κρίσιμης
- Υποδομές κρίσιμης σημασίας
- Πελάτες
- ημερομηνία
- δεκαετίες
- Ανίχνευση
- Προσδιορίστε
- αποφασισμένος
- έγγραφο
- έγγραφα
- τομέα
- domains
- οδηγείται
- κάθε
- δίνει τη δυνατότητα
- ενεργοποίηση
- Τελικό σημείο
- μηχανικός
- εισερχόμενοι
- εξ ολοκλήρου
- Περιβάλλον
- Αιθέρας (ΕΤΗ)
- αξιολογώντας
- εκδηλώσεις
- παράδειγμα
- ενθουσιασμένοι
- λίγοι
- Πεδία
- εύρεση
- Όνομα
- ταιριάζουν
- ακολουθείται
- Για
- μορφή
- από
- πλήρως
- λειτουργία
- κέρδη
- Μεγαλώνοντας
- Έχω
- ύψος
- βοήθησε
- βοηθά
- ιστορικών
- ώρα
- HTML
- http
- HTTPS
- i
- i3
- ID
- Επίπτωση
- το σημαντικότερο
- in
- Συμπεριλαμβανομένου
- ευρετήριο
- δείκτες
- Υποδομή
- περιπτώσεις
- οδηγίες
- ολοκλήρωση
- σκοπεύω
- ενδιαφερόμενος
- σε
- εισάγοντας
- επικαλείται
- αντικειμένων
- επανάληψη
- ΤΟΥ
- εαυτό
- jpg
- Διατήρηση
- τήρηση
- Κλειδί
- λέξεις-κλειδιά
- επιγραφή
- large
- Αφάνεια
- ξεκινάει
- Υπήνεμος
- Μου αρέσει
- ζω
- φορτίο
- Παρτίδα
- χαμηλότερα
- Κυρίως
- Μνήμη
- μήνυμα
- μηνύματα
- Metrics
- μεταναστεύσουν
- μεταναστεύουν
- μετανάστευση
- εκατομμύριο
- εκατομμύρια πελάτες
- καθρέπτης
- περισσότερο
- πλέον
- μετακινήσετε
- πολλαπλούς
- MySQL
- όνομα
- και συγκεκριμένα
- Φυσικό
- ανάγκες
- Νέα
- πρόσφατα
- επόμενη
- Όχι.
- αριθμός
- of
- off
- on
- διαδικτυακά (online)
- λειτουργεί
- Επιλογές
- Επιλογές
- or
- ΑΛΛΑ
- δικός μας
- Παράλληλο
- μέρος
- πρότυπα
- για
- τοις εκατό
- επίδοση
- Φωτογραφίες
- κομμάτια
- αγωγού
- Πλατφόρμες
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- Αναμενόμενος
- χυτρα
- προηγούμενος
- Κύριος
- διαδικασια μας
- επεξεργασία
- παραγωγή
- Πρόοδος
- παρέχεται
- παρέχει
- δημοσιεύει
- δημοσιεύθηκε
- Δημοσιεύσεις
- φθάνοντας
- μείωση
- απάντηση
- αιτήματα
- απαιτείται
- με αποτέλεσμα
- Αποτελέσματα
- τρέξιμο
- ασφάλεια
- ίδιο
- πριόνι
- Απεριόριστες δυνατότητες
- απολέπιση
- γραφή
- Αναζήτηση
- αναζήτηση
- σπόρος
- τμήμα
- τμήματα
- πωλούν
- αποστολή
- αποστέλλονται
- Χωρίς διακομιστή
- υπηρεσία
- Υπηρεσίες
- Κοινοποίηση
- Μερίδια
- παρόμοιες
- Απλούς
- ταυτοχρόνως
- αφού
- ενιαίας
- Απόσπασμα
- So
- λογισμικό
- Πηγή
- Προσωπικό
- παραμονή
- σταθερά
- Διακόπτει
- χώρος στο δίσκο
- κατάστημα
- καταστήματα
- Στρατηγική
- ροές
- τέτοιος
- συστήματα
- τραπέζι
- παίρνει
- Τεχνικός
- δεκάδες
- δοκιμή
- Δοκιμές
- από
- ότι
- Η
- Η Πηγη
- τους
- Τους
- Εκεί.
- Αυτοί
- αυτό
- τρία
- Μέσω
- ώρα
- προς την
- πήρε
- τροχιά
- ΚΙΝΗΣΗ στους ΔΡΟΜΟΥΣ
- ενεργοποιούν
- Αλήθεια
- ΣΤΡΟΦΗ
- δύο
- υπό
- ενημερώθηκε
- ενημερώσεις
- Ανέβασμα
- URL
- Χρήση
- χρήση
- περιπτώσεις χρήσης
- μεταχειρισμένος
- Χρήστες
- χρησιμοποιεί
- χρησιμοποιώντας
- ΕΠΙΚΥΡΩΝΩ
- αξία
- εκδοχή
- πολύ
- ήταν
- we
- ιστός
- διαδικτυακές υπηρεσίες
- καλωσόρισμα
- Τι
- πότε
- ενώ
- με
- χωρίς
- γράφω
- γραφή
- γραπτή
- zephyrnet
- μηδέν