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

Cassandra έχει σχεδιαστεί για να χειρίζεται Big Data. CassandraΤο κύριο χαρακτηριστικό του είναι να αποθηκεύει δεδομένα σε πολλούς κόμβους χωρίς ένα μόνο σημείο αστοχίας.
Ο λόγος για αυτό το είδος CassandraΗ αρχιτεκτονική του ήταν ότι η αποτυχία υλικού μπορεί να συμβεί ανά πάσα στιγμή. Οποιοσδήποτε κόμβος μπορεί να είναι κάτω. Σε περίπτωση αποτυχίας μπορούν να χρησιμοποιηθούν δεδομένα που είναι αποθηκευμένα σε άλλο κόμβο. Οθεν, Cassandra έχει σχεδιαστεί με την κατανεμημένη αρχιτεκτονική του.
Cassandra αποθηκεύει δεδομένα σε διαφορετικούς κόμβους με μια αρχιτεκτονική μόδας κατανεμημένη από ομοτίμους.
Όλοι οι κόμβοι ανταλλάσσουν πληροφορίες μεταξύ τους χρησιμοποιώντας Πρωτόκολλο κουτσομπολιού. Το κουτσομπολιό είναι ένα πρωτόκολλο στο Cassandra μέσω των οποίων οι κόμβοι μπορούν να επικοινωνούν μεταξύ τους.
Συστατικά του Cassandra Archiδομή
Υπάρχουν τα ακόλουθα συστατικά στο Cassandra Archiδομή:

Το παραπάνω διάγραμμα ενσωματώνει τα στοιχεία: οι κόμβοι βρίσκονται μέσα σε ένα κέντρο δεδομένων, τα κέντρα δεδομένων βρίσκονται μέσα σε ένα σύμπλεγμα και το αρχείο καταγραφής υποβολής, ο πίνακας memtable και το SSTable βρίσκονται μέσα σε κάθε μεμονωμένο κόμβο.
Κόμβος
Κόμβος είναι το μέρος όπου αποθηκεύονται τα δεδομένα. Είναι το βασικό συστατικό του Cassandra.
Κέντρο δεδομένων
Μια συλλογή κόμβων ονομάζεται κέντρο δεδομένων. Πολλοί κόμβοι κατηγοριοποιούνται ως κέντρο δεδομένων.
Cluster
Το σύμπλεγμα είναι η συλλογή πολλών κέντρων δεδομένων.
Καταγραφή δεσμεύσεων
Κάθε λειτουργία εγγραφής γράφεται στο Commit Log. Το αρχείο καταγραφής δέσμευσης χρησιμοποιείται για την ανάκτηση σφαλμάτων.
Mem-τραπέζι
Μετά την εγγραφή δεδομένων στο αρχείο καταγραφής δέσμευσης, τα δεδομένα εγγράφονται στον πίνακα Mem. Τα δεδομένα εγγράφονται στον πίνακα Mem προσωρινά.
SSTable
Όταν ο πίνακας Mem φτάσει σε ένα συγκεκριμένο όριο, τα δεδομένα εκκαθαρίζονται σε ένα αρχείο δίσκου SSTable. Τα SSTables είναι αμετάβλητα, επομένως μια ενημέρωση γράφει μια νέα έκδοση αντί να επεξεργάζεται την παλιά, και μια διαδικασία παρασκηνίου που ονομάζεται συμπύκνωση αργότερα συγχωνεύει αυτές τις εκδόσεις και απορρίπτει τις αντικατασταθείσες γραμμές.
Αντιγραφή δεδομένων σε Cassandra
Καθώς μπορεί να προκύψει πρόβλημα υλικού ή η σύνδεση μπορεί να διακοπεί ανά πάσα στιγμή κατά τη διάρκεια της διαδικασίας δεδομένων, απαιτείται λύση για την παροχή αντιγράφου ασφαλείας όταν παρουσιαστεί το πρόβλημα. Έτσι, τα δεδομένα αναπαράγονται για να εξασφαλιστεί κανένα σημείο αποτυχίας.
Cassandra τοποθετεί αντίγραφα δεδομένων σε διαφορετικούς κόμβους με βάση αυτούς τους δύο παράγοντες.
- Το πού θα τοποθετηθεί το επόμενο αντίγραφο καθορίζεται από το Στρατηγική αντιγραφής.
- Ενώ ο συνολικός αριθμός των αντιγράφων που τοποθετούνται σε διαφορετικούς κόμβους καθορίζεται από το Συντελεστής αναπαραγωγής.
Ένας παράγοντας αναπαραγωγής σημαίνει ότι υπάρχει μόνο ένα αντίγραφο δεδομένων ενώ τρεις συντελεστές αναπαραγωγής σημαίνει ότι υπάρχουν τρία αντίγραφα των δεδομένων σε τρεις διαφορετικούς κόμβους.
Για να διασφαλιστεί ότι δεν υπάρχει κανένα σημείο αποτυχίας, ο συντελεστής αναπαραγωγής πρέπει να είναι τρεις.
Υπάρχουν δύο είδη στρατηγικών αναπαραγωγής Cassandra.
SimpleStrategy σε Cassandra
Απλή Στρατηγική χρησιμοποιείται όταν έχετε μόνο ένα κέντρο δεδομένων. Το SimpleStrategy τοποθετεί το πρώτο αντίγραφο στον κόμβο που έχει επιλεγεί από το διαμέρισμα. Μετά από αυτό, τα υπόλοιπα αντίγραφα τοποθετούνται δεξιόστροφα στον δακτύλιο Κόμβου.
Ακολουθεί η εικονογραφική αναπαράσταση του SimpleStrategy:

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

Ο παράγοντας αναπαραγωγής αποφασίζει πόσα αντίγραφα υπάρχουν. Το πόσα από αυτά τα αντίγραφα πρέπει να απαντήσουν σε ένα δεδομένο αίτημα είναι μια ξεχωριστή ρύθμιση, η οποία περιγράφεται στη συνέχεια.
Επίπεδα Συνέπειας σε Cassandra
Το επίπεδο συνέπειας ορίζεται ανά ερώτημα και όχι ανά σύμπλεγμα, κάτι που κάνει Cassandra Ρυθμιζόμενο. Δηλώνει πόσα αντίγραφα πρέπει να επιβεβαιώσουν μια εγγραφή ή να απαντήσουν σε μια ανάγνωση, πριν ο συντονιστής απαντήσει στον πελάτη. Ένα χαμηλό επίπεδο επιστρέφει πιο γρήγορα, ενώ ένα υψηλό επίπεδο επιστρέφει δεδομένα που είναι πιο ενημερωμένα.
| Επίπεδο | συμπεριφορά | Τυπική χρήση |
|---|---|---|
| ONE | Ένα αντίγραφο πρέπει να απαντήσει. | Καταγραφή υψηλής απόδοσης όπου είναι αποδεκτή μια περιστασιακή παλιά ανάγνωση. |
| ΑΠΑΡΤΙΑ | Η πλειοψηφία όλων των αντιγράφων πρέπει να ανταποκριθεί, υπολογισμένη ως (RF / 2) + 1. | Η επιλογή γενικής χρήσης για ισορροπημένη συνέπεια και διαθεσιμότητα. |
| ΤΟΠΙΚΗ_ΑΠΑΡΤΙΑ | Η πλειοψηφία των αντιγράφων εντός του τοπικού κέντρου δεδομένων πρέπει να ανταποκριθεί. | Συστάδες πολλαπλών κέντρων δεδομένων, επειδή αποφεύγεται η καθυστέρηση μεταξύ περιοχών. |
| ΌΛΟΙ | Κάθε αντίγραφο πρέπει να απαντήσει. | Σπάνιο. Ένας κόμβος εκτός λειτουργίας έχει ως αποτέλεσμα το αίτημα να αποτύχει εντελώς. |
| ΟΠΟΙΑΔΗΠΟΤΕ (μόνο γράφει) | Μια υποδεικνυόμενη μεταβίβαση μετράει ως επιτυχία, ακόμη και αν δεν είναι προσβάσιμο κανένα αντίγραφο. | Μέγιστη διαθεσιμότητα εγγραφής όπου η ανθεκτικότητα μπορεί να χαλαρώσει. |
Η ισχυρή συνέπεια είναι εγγυημένη όταν το επίπεδο ανάγνωσης συν το επίπεδο εγγραφής υπερβαίνει τον συντελεστή αναπαραγωγής. Με συντελεστή αναπαραγωγής τρία, η εγγραφή στο QUORUM και η ανάγνωση στο QUORUM ικανοποιεί αυτόν τον κανόνα, επειδή δύο συν δύο είναι μεγαλύτερο από τρία. Η εγγραφή στο ΕΝΑ και η ανάγνωση στο ΕΝΑ δεν ικανοποιεί αυτόν τον κανόνα και, επομένως, μια ανάγνωση μπορεί να επιστρέψει μια παλαιότερη τιμή.
Όταν ένα αντίγραφο είναι μη προσβάσιμο, ο συντονιστής αποθηκεύει ένα υπαινιγμός και το επαναλαμβάνει μόλις επιστρέψει ο κόμβος, και έτσι λειτουργεί το ΟΠΟΙΟΔΗΠΟΤΕ επίπεδο και μεγάλο μέρος του CassandraΗ συμπεριφορά αυτοΐασης λειτουργεί.
Γράφω Operation in Cassandra
Ο συντονιστής στέλνει ένα αίτημα εγγραφής στα αντίγραφα. Εάν όλα τα αντίγραφα είναι επάνω, θα λάβουν αίτημα εγγραφής ανεξάρτητα από το επίπεδο συνέπειάς τους.
Επίπεδο συνέπειας καθορίζει πόσοι κόμβοι θα ανταποκριθούν με την επιβεβαίωση επιτυχίας.
Ο κόμβος θα απαντήσει με την επιβεβαίωση επιτυχίας εάν τα δεδομένα εγγραφούν με επιτυχία στο αρχείο καταγραφής δέσμευσης και memTable.
Για παράδειγμα, σε ένα μόνο κέντρο δεδομένων με συντελεστή αναπαραγωγής ίσο με τρία, τρία αντίγραφα θα λάβουν αίτημα εγγραφής. Εάν το επίπεδο συνέπειας είναι ένα, μόνο ένα αντίγραφο θα ανταποκριθεί με την επιβεβαίωση επιτυχίας και τα υπόλοιπα δύο θα παραμείνουν σε αδράνεια.
Ας υποθέσουμε ότι τα υπόλοιπα δύο αντίγραφα χάνουν δεδομένα λόγω πτώσης κόμβου ή κάποιου άλλου προβλήματος, Cassandra θα κάνει τη σειρά συνεπή από τον ενσωματωμένο μηχανισμό επισκευής Cassandra.
Εδώ εξηγείται πώς συμβαίνει η διαδικασία εγγραφής Cassandra,
- Όταν η αίτηση εγγραφής έρχεται στον κόμβο, πρώτα απ 'όλα, καταγράφεται στο αρχείο καταγραφής δέσμευσης.
- Τότε Cassandra γράφει τα δεδομένα στον πίνακα mem. Τα δεδομένα που γράφονται στον πίνακα mem σε κάθε αίτημα εγγραφής εγγράφονται επίσης στο αρχείο καταγραφής δεσμεύσεων ξεχωριστά. Το Mem-table είναι προσωρινά αποθηκευμένα δεδομένα στη μνήμη, ενώ το αρχείο καταγραφής Commit καταγράφει τις εγγραφές συναλλαγών για σκοπούς δημιουργίας αντιγράφων ασφαλείας.
- Όταν ο mem-table είναι γεμάτος, τα δεδομένα ξεπλένονται στο αρχείο δεδομένων SSTable.

Επειδή τα SSTables δεν υποβάλλονται ποτέ σε επεξεργασία επί τόπου, μια διαγραφή δεν καταργεί αμέσως τη γραμμή. Αντίθετα, ένας δείκτης που ονομάζεται επιτύμβια στήλη γράφεται και η γραμμή εξαφανίζεται μόνο όταν η συμπύκνωση εκτελείται μετά την περίοδο χάριτος. Αυτός είναι ο λόγος για τον οποίο τα βαριά φόρτα εργασίας διαγραφής αργούν την ανάγνωση μέχρι να καλύψει το χρονικά όριο της συμπύκνωσης.
Διάβασε Operation in Cassandra
Υπάρχουν τρεις τύποι αιτημάτων ανάγνωσης που στέλνει ένας συντονιστής σε αντίγραφα.
- Άμεσο αίτημα
- Αίτημα Digest
- Διαβάστε το αίτημα επισκευής
Ο συντονιστής στέλνει απευθείας αίτημα σε ένα από τα αντίγραφα. Μετά από αυτό, ο συντονιστής στέλνει το αίτημα σύνοψης στον αριθμό των αντιγράφων που καθορίζεται από το επίπεδο συνέπειας και ελέγχει εάν τα επιστρεφόμενα δεδομένα είναι ενημερωμένα δεδομένα.
Μετά από αυτό, ο συντονιστής στέλνει αίτημα σύνοψης σε όλα τα υπόλοιπα αντίγραφα. Εάν οποιοσδήποτε κόμβος δίνει μη ενημερωμένη τιμή, ένα αίτημα επιδιόρθωσης ανάγνωσης στο παρασκήνιο θα ενημερώσει αυτά τα δεδομένα. Αυτή η διαδικασία ονομάζεται μηχανισμός επιδιόρθωσης ανάγνωσης.
Μέσα στο αντίγραφο που λαμβάνει το άμεσο αίτημα, η σειρά αναζήτησης έχει σχεδιαστεί έτσι ώστε να αποφεύγεται η επαφή με τον δίσκο, όπου είναι δυνατόν.
- The memtable ελέγχεται πρώτα, καθώς οι νεότερες εγγραφές δεν έχουν ακόμη εκκαθαριστεί.
- The προσωρινή μνήμη γραμμών, εάν είναι ενεργοποιημένο, μπορεί να απαντήσει σε ολόκληρο το αίτημα χωρίς περαιτέρω εργασία.
- A φίλτρο άνθισης για κάθε SSTable συμβουλεύεται το . Απαντάει ότι σίγουρα δεν υπάρχει ή πιθανώς υπάρχει, γεγονός που επιτρέπει την παράλειψη των περισσότερων SSTables χωρίς την ανάγνωσή τους.
- The δείκτης διαμερίσματος και η περίληψή του εντοπίζουν την ακριβή μετατόπιση byte μέσα σε οποιοδήποτε SSTable που επιβιώνει από τον έλεγχο φίλτρου bloom.
- Τα αντίστοιχα τμήματα από διάφορα SSTables συγχωνεύονται, με την πιο πρόσφατη χρονική σήμανση να κερδίζει για κάθε στήλη.
Το φίλτρο bloom είναι το βήμα που διατηρεί τις αναγνώσεις γρήγορες καθώς αυξάνονται τα δεδομένα, επειδή αφαιρεί σχεδόν κάθε SSTable από την εξέταση πριν από οποιαδήποτε αναζήτηση δίσκου. Η εφαρμογή αυτών των μηχανισμών σε πολλά μηχανήματα καλύπτεται στο Cassandra συστάδα tutorial.
