Το Garnet είναι ένας νέος τύπος απομακρυσμένης αποθήκευσης προσωρινής μνήμης που αναπτύχθηκε από τη Microsoft Research και προσφέρει πολλά μοναδικά πλεονεκτήματα:
- Το Garnet λαμβάνει ως σημείο εκκίνησης το δημοφιλές πρωτόκολλο γραμμής RESP, το οποίο καθιστά δυνατή τη χρήση του Garnet από μη τροποποιημένους πελάτες Redis που είναι διαθέσιμοι στις περισσότερες γλώσσες προγραμματισμού σήμερα, όπως το StackExchange.Redis σε C#.
- Το Garnet προσφέρει καλύτερη απόδοση και επεκτασιμότητα με πολλές συνδέσεις πελατών και μικρές παρτίδες σε σύγκριση με συγκρίσιμη αποθήκευση κρυφής μνήμης ανοιχτού κώδικα, εξοικονομώντας κόστος για μεγάλες εφαρμογές και υπηρεσίες.
- Το Garnet επέδειξε εξαιρετικά χαμηλή καθυστέρηση πελάτη (συνήθως λιγότερο από 300 μικροδευτερόλεπτα στο 99.9%) χρησιμοποιώντας VM Commodity Cloud (Azure) με ενεργοποιημένο το επιταχυνόμενο TCP, κάτι που είναι κρίσιμο για σενάρια πραγματικού κόσμου.
- Το Garnet βασίζεται στην τελευταία τεχνολογία .NET και είναι cross-platform, επεκτάσιμο και μοντέρνο. Έχει σχεδιαστεί για να είναι εύκολο να αναπτυχθεί και να εξελιχθεί χωρίς να θυσιάζεται η απόδοση σε κοινές καταστάσεις. Αξιοποιούμε το πλούσιο οικοσύστημα βιβλιοθηκών του .NET για να επεκτείνουμε το API και να παρέχουμε ανοιχτές ευκαιρίες βελτιστοποίησης. Χάρη στην προσεκτική χρήση του .NET, το Garnet επιτυγχάνει απόδοση αιχμής τόσο σε Linux όσο και σε Windows.
Διεύθυνση ανοιχτού κώδικα:Η σύνδεση με υπερσύνδεσμο είναι ορατή. Τεκμηρίωση:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Ο γρανάτης έχει τα ακόλουθα βασικά πλεονεκτήματα:
- Η απόδοση του διακομιστή (λειτουργίες ανά δευτερόλεπτο) αυξάνεται κατά αρκετές τάξεις μεγέθους για μικρές παρτίδες και πολλές περιόδους λειτουργίας πελάτη σε σχέση με συγκρίσιμη αποθήκευση cache ανοιχτού κώδικα.
- Σε μηχανήματα cloud εμπορευμάτων (Azure) με ενεργοποιημένο το επιταχυνόμενο TCP σε Windows και Linux, η καθυστέρηση ανά λειτουργία είναι εξαιρετικά χαμηλή (συνήθως λιγότερο από 300 μικροδευτερόλεπτα στο 99,9%).
- Καθώς ο αριθμός των πελατών αυξάνεται, επιτυγχάνεται καλύτερη επεκτασιμότητα με ή χωρίς ομαδοποίηση πελατών.
- Δυνατότητα χρήσης όλων των πόρων CPU/μνήμης ενός υπολογιστή διακομιστή μέσω μιας παρουσίας διακομιστή κοινόχρηστης μνήμης (δεν χρειάζεται συμπλέγματα εντός κόμβων).
- Υποστήριξη για σύνολα δεδομένων μεγαλύτερα από τη μνήμη που υπερχειλίζουν σε συσκευές αποθήκευσης εσωτερικής εγκατάστασης και cloud.
- Λειτουργίες βάσης δεδομένων, όπως γρήγορο σημείο ελέγχου και ανάκτηση και δημοσίευση/εγγραφή.
- Υποστήριξη για κατάτμηση κατακερματισμού πολλαπλών κόμβων (λειτουργία "cluster" Redis), μετεγκατάσταση κατάστασης και αναπαραγωγή.
- Καλά δοκιμασμένο με μια ολοκληρωμένη σουίτα δοκιμών (χιλιάδες δοκιμές μονάδων έναντι του Γρανάτη και του επιπέδου αποθήκευσης του Τσαβορίτη).
- Βάση κώδικα C# που είναι εύκολο να εξελιχθεί και να επεκταθεί.
Το Garnet δεν υποστηρίζει όλες τις εντολές Redis, ειδικά υποστηριζόμενες εντολές για προβολή:Η σύνδεση με υπερσύνδεσμο είναι ορατή. Το έργο Garnet περιλαμβάνει ένα εργαλείο Benchmark για την εκτέλεση σημείων αναφοράς RESP χρησιμοποιώντας διαφορετικούς πελάτες, διαφορετικούς φόρτους εργασίας και διαφορετικές πολιτικές για τη μέτρηση της απόδοσης, της απόδοσης και του λανθάνοντος χρόνου. Διεύθυνση:Η σύνδεση με υπερσύνδεσμο είναι ορατή. Πρωτόκολλο RESP:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Αυτό το άρθρο χρησιμοποιεί τα ενσωματωμένα εργαλεία συγκριτικής αξιολόγησης της Redis για απλές δοκιμές και το περιβάλλον δοκιμής έχει ως εξής:
| κρύβω | εκδοχή | | Ρέντις | Redis 3.0.504 (00000000/0) 64 bit | | Γκρενά | Γρανάτης 1.0.2 64 bit; αυτόνομη λειτουργία |
Σημεία αναφοράς Redis
Αρχικά, εκκινήστε την προσωρινή μνήμη Redis χρησιμοποιώντας τη γραμμή εντολών με την ακόλουθη εντολή:
Η εντολή δοκιμής είναι η εξής:
Τα αποτελέσματα έχουν ως εξής:
====== ΣΕΤ ====== 500000 αιτήσεις ολοκληρώθηκαν σε 24.38 δευτερόλεπτα 100 παράλληλοι πελάτες Φορτίο 3 byte Διατήρηση της ζωής: 1
0,03% <= 1 χιλιοστά του δευτερολέπτου 0,25% <= 2 χιλιοστά του δευτερολέπτου 2,65% <= 3 χιλιοστά του δευτερολέπτου 16,49% <= 4 χιλιοστά του δευτερολέπτου 59,95% <= 5 χιλιοστά του δευτερολέπτου 99,09% <= 6 χιλιοστά του δευτερολέπτου 99,76% <= 7 χιλιοστά του δευτερολέπτου 99,86% <= 8 χιλιοστά του δευτερολέπτου 99,93% <= 9 χιλιοστά του δευτερολέπτου 99,98% <= 10 χιλιοστά του δευτερολέπτου 99,99% <= 11 χιλιοστά του δευτερολέπτου 100,00% <= 12 χιλιοστά του δευτερολέπτου 20512,82 αιτήματα ανά δευτερόλεπτο
====== ΑΠΟΚΤΉΣΤΕ ====== 500000 αιτήσεις ολοκληρώθηκαν σε 27.41 δευτερόλεπτα 100 παράλληλοι πελάτες Φορτίο 3 byte Διατήρηση της ζωής: 1
0,03% <= 1 χιλιοστά του δευτερολέπτου 0,19% <= 2 χιλιοστά του δευτερολέπτου 6,44% <= 3 χιλιοστά του δευτερολέπτου 25,82% <= 4 χιλιοστά του δευτερολέπτου 45,65% <= 5 χιλιοστά του δευτερολέπτου 98,79% <= 6 χιλιοστά του δευτερολέπτου 99,98% <= 7 χιλιοστά του δευτερολέπτου 99,98% <= 8 χιλιοστά του δευτερολέπτου 99,98% <= 9 χιλιοστά του δευτερολέπτου 100,00% <= 9 χιλιοστά του δευτερολέπτου 18238,86 αιτήματα ανά δευτερόλεπτο
Δείκτες αναφοράς γρανάτη
Δημιουργήστε ένα νέο έργο κονσόλας .NET 8 και αναφέρετε πρώτα το πακέτο Microsoft.Garnet με την ακόλουθη εντολή:
Ο κωδικός έχει ως εξής:
Η εντολή εκκίνησης είναι η εξής:
Χρησιμοποιώντας την ίδια εντολή benchmark, το αποτέλεσμα είναι το εξής:
====== ΣΕΤ ====== 500000 αιτήσεις ολοκληρώθηκαν σε 11.51 δευτερόλεπτα 100 παράλληλοι πελάτες Φορτίο 3 byte Διατήρηση της ζωής: 1
75,51% <= 1 χιλιοστά του δευτερολέπτου 88,24% <= 2 χιλιοστά του δευτερολέπτου 92,04% <= 3 χιλιοστά του δευτερολέπτου 99,46% <= 4 χιλιοστά του δευτερολέπτου 99,98% <= 5 χιλιοστά του δευτερολέπτου 99,99% <= 6 χιλιοστά του δευτερολέπτου 100,00% <= 12 χιλιοστά του δευτερολέπτου 100,00% <= 12 χιλιοστά του δευτερολέπτου 43448.04 αιτήματα ανά δευτερόλεπτο
====== ΑΠΟΚΤΉΣΤΕ ====== 500000 αιτήσεις ολοκληρώθηκαν σε 31.50 δευτερόλεπτα 100 παράλληλοι πελάτες Φορτίο 3 byte Διατήρηση της ζωής: 1
0,01% <= 1 χιλιοστά του δευτερολέπτου 0,90% <= 2 χιλιοστά του δευτερολέπτου 27,25% <= 3 χιλιοστά του δευτερολέπτου 97,65% <= 4 χιλιοστά του δευτερολέπτου 99,82% <= 5 χιλιοστά του δευτερολέπτου 99,94% <= 6 χιλιοστά του δευτερολέπτου 99,98% <= 7 χιλιοστά του δευτερολέπτου 99,98% <= 9 χιλιοστά του δευτερολέπτου 99,98% <= 10 χιλιοστά του δευτερολέπτου 99,99% <= 11 χιλιοστά του δευτερολέπτου 100,00% <= 12 χιλιοστά του δευτερολέπτου 100,00% <= 12 χιλιοστά του δευτερολέπτου 15872.01 αιτήματα ανά δευτερόλεπτο Λόγω των εργαλείων δοκιμών, των εκδόσεων λογισμικού, των παραμέτρων δοκιμής κ.λπ., όλα οδηγούν σε διαφορετικά αποτελέσματα, οι δοκιμές είναι μόνο για αναφορά, μέσω των απλών δοκιμών σε αυτό το άρθρο, μπορεί να φανεί ότι το Garnet έχει σημαντικά χαμηλότερο λανθάνοντα χρόνο από το Redis.
(Τέλος) |