Κυκλοφορία του Dragonfly 1.0, ενός συστήματος προσωρινής αποθήκευσης δεδομένων στη μνήμη

Κυκλοφόρησε το σύστημα προσωρινής αποθήκευσης και αποθήκευσης σε μνήμη Dragonfly, το οποίο χειρίζεται δεδομένα σε μορφή κλειδιού/τιμής και μπορεί να χρησιμοποιηθεί ως μια ελαφριά λύση για την επιτάχυνση της εργασίας ιστοτόπων με υψηλή φόρτωση, την προσωρινή αποθήκευση αργών ερωτημάτων στο DBMS και ενδιάμεσων δεδομένων στη μνήμη RAM. Το Dragonfly υποστηρίζει τα πρωτόκολλα Memcached και Redis, τα οποία σας επιτρέπουν να χρησιμοποιείτε υπάρχουσες βιβλιοθήκες πελατών και να μεταφέρετε έργα χρησιμοποιώντας το Memcached και το Redis στο Dragonfly χωρίς να επεξεργαστείτε ξανά τον κώδικα.

Σε σύγκριση με το Redis, το Dragonfly πέτυχε 2πλάσια αύξηση στην απόδοση (6 εκατομμύρια αιτήματα ανά δευτερόλεπτο) για τυπικούς φόρτους εργασίας στο περιβάλλον Amazon EC16 c25gn.3.8xlarge. Σε σύγκριση με το Memcached στο περιβάλλον AWS c6gn.16xlarge, το Dragonfly κατάφερε να εκτελέσει 4.7 φορές περισσότερα αιτήματα εγγραφής ανά δευτερόλεπτο (3.8 εκατομμύρια έναντι 806 χιλιάδες) και 1.77 φορές περισσότερα αιτήματα ανάγνωσης ανά δευτερόλεπτο (3.7 εκατομμύρια έναντι 2.1 εκατομμύρια).

Κυκλοφορία του Dragonfly 1.0, ενός συστήματος προσωρινής αποθήκευσης δεδομένων στη μνήμη

Σε δοκιμές για την αποθήκευση 5 GB δεδομένων, το Dragonfly απαιτούσε 30% λιγότερη μνήμη από το Redis. Κατά τη δημιουργία στιγμιότυπων με την εντολή "bgsave", η κατανάλωση μνήμης αυξάνεται, αλλά σε στιγμές αιχμής παρέμεινε σχεδόν τρεις φορές μικρότερη από ό,τι στο Redis και η ίδια η λειτουργία εγγραφής στιγμιότυπου είναι πολύ πιο γρήγορη (στη δοκιμή, ένα στιγμιότυπο στο Dragonfly γράφτηκε το 30 δευτερόλεπτα, ενώ ο Redis - σε 42 δευτερόλεπτα).

Κυκλοφορία του Dragonfly 1.0, ενός συστήματος προσωρινής αποθήκευσης δεδομένων στη μνήμη

Η υψηλή απόδοση επιτυγχάνεται χάρη σε μια αρχιτεκτονική πολλαπλών νημάτων χωρίς κοινή χρήση πόρων (shared-nothing), που σημαίνει ότι σε κάθε νήμα εκχωρείται ένας ξεχωριστός ξεχωριστός επεξεργαστής με το δικό του τμήμα δεδομένων, που λειτουργεί χωρίς mutexes και spin locks. Για να διασφαλιστεί η ατομικότητα κατά την εργασία με πολλά κλειδιά, χρησιμοποιούνται ελαφριές κλειδαριές VLL. Για την αποτελεσματική αποθήκευση πληροφοριών στη μνήμη, χρησιμοποιείται η δομή με το dashtable, η οποία υλοποιεί έναν τύπο κατακερματισμένου πίνακα κατακερματισμού.

Μερικά χαρακτηριστικά του Dragonfly:

  • Λειτουργία προσωρινής αποθήκευσης, η οποία αντικαθιστά αυτόματα τα παλιά δεδομένα με νέα δεδομένα μετά την εξάντληση της ελεύθερης μνήμης.
  • Υποστήριξη για δέσμευση δεδομένων για όλη τη διάρκεια της οποίας τα δεδομένα θεωρούνται σχετικά.
  • Υποστήριξη για flushing κατάσταση αποθήκευσης στο δίσκο στο παρασκήνιο για μελλοντική ανάκτηση μετά την επανεκκίνηση.
  • Η παρουσία κονσόλας HTTP (δεσμεύεται στη θύρα TCP 6379) για διαχείριση συστήματος και API για επιστροφή μετρήσεων, συμβατό με το Prometheus.
  • Υποστήριξη για 185 εντολές Redis, η οποία είναι περίπου ισοδύναμη με τη λειτουργικότητα της έκδοσης Redis 5.
  • Υποστηρίζει όλες τις εντολές Memcached εκτός από το CAS (check-and-set).
  • Υποστήριξη για ασύγχρονες λειτουργίες για τη δημιουργία στιγμιότυπων.
  • Προβλεπόμενη κατανάλωση μνήμης.
  • Ενσωματωμένος διερμηνέας Lua 5.4.
  • Υποστηρίζει σύνθετους τύπους δεδομένων όπως κατακερματισμούς, σύνολα, λίστες (ZSET, HSET, LIST, SETS και STRING) και δεδομένα JSON.
  • Υποστηρίζει αναπαραγωγή αποθήκευσης για ανοχή σφαλμάτων και εξισορρόπηση φορτίου.

Ο κώδικας Dragonfly είναι γραμμένος σε C/C++ και διανέμεται υπό την άδεια BSL (Business Source License). Η άδεια BSL προτάθηκε από τους συνιδρυτές της MySQL ως εναλλακτική λύση στο μοντέλο Open Core. Η ουσία του BSL είναι ότι ο κώδικας προηγμένης λειτουργικότητας είναι αρχικά διαθέσιμος για τροποποίηση, αλλά για κάποιο χρονικό διάστημα μπορεί να χρησιμοποιηθεί δωρεάν μόνο εάν πληρούνται πρόσθετες προϋποθέσεις, οι οποίες απαιτούν την αγορά μιας εμπορικής άδειας για παράκαμψη. Οι πρόσθετοι όροι άδειας για το έργο Dragonfly απαιτούν τη μεταφορά του κώδικα στην άδεια Apache 2.0 στις 15 Μαρτίου 2028. Μέχρι αυτή τη στιγμή, η άδεια επιτρέπει τη χρήση του κώδικα μόνο για τη διασφάλιση της λειτουργίας των υπηρεσιών και των προϊόντων της, αλλά απαγορεύει τη χρήση για τη δημιουργία πληρωμένων υπηρεσιών cloud που λειτουργούν ως πρόσθετο στο Dragonfly.

Η έκδοση Dragonfly 1.0 είναι αξιοσημείωτη για την εφαρμογή της υποστήριξης για αναπαραγωγή δεδομένων από τον κύριο διακομιστή στον δευτερεύοντα. Ωστόσο, το Dragonfly μπορεί να ρυθμιστεί ώστε να χρησιμοποιείται ως δευτερεύουσα αποθήκευση που λαμβάνει δεδομένα από έναν κύριο διακομιστή είτε με βάση το Dragonfly είτε με βάση το Redis. Το API διαχείρισης αναπαραγωγής είναι συμβατό με το Redis και βασίζεται στη χρήση των εντολών ROLE και REPLICAOF (SLAVEOF).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο