1. Τι είναι η εξισορρόπηση φορτίου Ένας νέος ιστότοπος δεν πρέπει να είναι ισορροπημένος με φορτίο, επειδή ο όγκος επισκεψιμότητας δεν είναι μεγάλος, επομένως δεν χρειάζεται να ασχοληθείτε με αυτά τα πράγματα. Ωστόσο, με την ταχεία αύξηση της επισκεψιμότητας και της επισκεψιμότητας του ιστότοπου, ένας μεμονωμένος διακομιστής περιορίζεται από τις δικές του συνθήκες υλικού και είναι δύσκολο να αντέξει τόσο μεγάλο αριθμό επισκέψεων. Σε αυτήν την περίπτωση, υπάρχουν δύο επιλογές για να διαλέξετε: 1. Ενημερώστε το υλικό ενός μεμονωμένου διακομιστή, από διπύρηνο σε τετραπύρηνο, αυξήστε τη μνήμη κ.λπ. 2. Αυξήστε τον αριθμό των διακομιστών για να μοιραστείτε το βάρος των διακομιστών. Για την επίτευξη του σκοπού της αύξησης του εύρους ζώνης δικτύου και της αύξησης της επεξεργαστικής ισχύος του διακομιστή. Η πρώτη μέθοδος μπορεί να γίνει κατανοητή ως κάθετη ανάπτυξη, η οποία είναι πάντα περιορισμένη. Η δεύτερη μέθοδος είναι η σωστή επιλογή για την επίλυση του προβλήματος Οι μέθοδοι εξισορρόπησης φορτίου μπορούν να χωριστούν σε δύο κατευθύνσεις, η μία είναι η χρήση λογισμικού για την επίτευξη εξισορρόπησης φορτίου και η άλλη είναι η εφαρμογή εξισορρόπησης φορτίου υλικού (συμπεριλαμβανομένου του συνδυασμού υλικού και λογισμικού) Χρησιμοποιήστε λογισμικό για να επιτύχετε εξισορρόπηση φορτίου και η διαδικασία επίτευξης εξισορρόπησης φορτίου καταναλώνει επίσης ορισμένους πόρους του συστήματος και αυξάνει τον χρόνο απόκρισης. Για παράδειγμα, LVS, nginx, haproxy, apache κ.λπ., αυτά τα λογισμικά εξισορρόπησης φορτίου που βασίζονται σε εφαρμογές είναι κατάλληλα για ιστότοπους που δεν έχουν ιδιαίτερα μεγάλο αριθμό επισκέψεων. Εάν έχετε έναν ιστότοπο με μεγάλο αριθμό επισκέψεων όπως το sina και το 163, η χρήση υλικού για την εφαρμογή εξισορρόπησης φορτίου είναι η πιο προφανής επιλογή. Υπάρχουν πολλοί αλγόριθμοι εξισορρόπησης φορτίου, συμπεριλαμβανομένης της εξισορρόπησης φορτίου με βάση τον αριθμό των αιτημάτων, τις διευθύνσεις IP ρίζας και τους αλγόριθμους που βασίζονται στην κυκλοφορία. Υπάρχουν δύο αλγόριθμοι που χρησιμοποιώ συχνά. Το ένα βασίζεται στον αριθμό των αιτημάτων Α, μπορεί να συνειδητοποιήσει ότι κάθε διακομιστής μπορεί να μοιραστεί ομοιόμορφα το αίτημα του πελάτη και εάν ένας από τους διακομιστές πέσει, δεν θα προκαλέσει κακό αντίκτυπο. β. Η κατάσταση μεταξύ των διακομιστών πρέπει να συγχρονιστεί, όπως η περίοδος λειτουργίας, και απαιτούνται άλλα μέσα για τον συγχρονισμό αυτών των καταστάσεων. Το ένα είναι σύμφωνα με την IP Α, ip_hash αλγόριθμος μπορεί να αντιστοιχίσει μια IP σε έναν διακομιστή, ο οποίος μπορεί να λύσει το πρόβλημα του συγχρονισμού της συνεδρίας β. Το κακό με ip_hash είναι ότι εάν ένας από τους διακομιστές πέσει, οι χρήστες που έχουν αντιστοιχιστεί σε αυτόν τον διακομιστή θα είναι καταθλιπτικοί. γ, ip_hash μπορεί εύκολα να οδηγήσει σε μη ισορροπημένο φορτίο, τώρα η κυβέρνηση του καβουριού του ποταμού φιλτράρει τις λέξεις-κλειδιά αναζήτησης της Google, συχνά θα διαπιστώσετε ότι η Google δεν μπορεί να ανοίξει, αλλά θα είναι μια χαρά μετά από λίγο. Αυτό προκάλεσε κατάθλιψη σε αυτούς τους λάτρεις της Google και πολλοί χρήστες πήγαν στο εξωτερικό για να βρουν πράκτορες. Εάν συμβεί αυτό, αυτοί οι διακομιστής μεσολάβησης θα εκχωρηθούν στον ίδιο διακομιστή, προκαλώντας μη ισορροπημένο φορτίο και ακόμη και αποτυχία.
Δεύτερον, τι είναι η διεξαγωγή συνεδρίας και ποια είναι η λειτουργία της Η αναμονή συνεδρίας αναφέρεται σε έναν μηχανισμό στο πρόγραμμα εξισορρόπησης φορτίου που διασφαλίζει ότι τα αιτήματα πρόσβασης που σχετίζονται με τον ίδιο χρήστη διανέμονται στον ίδιο διακομιστή κατά την εξισορρόπηση φορτίου. Τι κάνει η συνεδρία, δώστε ένα παράδειγμα Εάν ένα αίτημα πρόσβασης χρήστη έχει εκχωρηθεί στον διακομιστή Α και συνδεθεί στον διακομιστή Α και σε σύντομο χρονικό διάστημα, αυτός ο χρήστης στείλει ένα άλλο αίτημα, εάν δεν υπάρχει λειτουργία αναμονής περιόδου λειτουργίας, το αίτημα αυτού του χρήστη είναι πιθανό να εκχωρηθεί στον διακομιστή Β, αυτή τη στιγμή δεν υπάρχει σύνδεση στον διακομιστή Β, επομένως πρέπει να συνδεθείτε ξανά, αλλά ο χρήστης δεν γνωρίζει πού έχει εκχωρηθεί το αίτημά του, η αίσθηση του χρήστη είναι ότι είναι συνδεδεμένος, γιατί πρέπει να συνδεθεί ξανά, η εμπειρία χρήστη είναι πολύ κακή. Και αν αγοράσετε κάτι στο Taobao, από το login = "Shoot something=" add address = "to pay", αυτή είναι μια σειρά διαδικασιών, οι οποίες μπορούν επίσης να γίνουν κατανοητές ως διαδικασία λειτουργίας, όλη αυτή η σειρά διαδικασιών λειτουργίας θα πρέπει να ολοκληρωθεί από έναν διακομιστή και δεν μπορεί να εκχωρηθεί σε διαφορετικούς διακομιστές από τον εξισορροπητή φορτίου. Η αναμονή συνεδρίας έχει ένα χρονικό όριο (εκτός από διακομιστές που έχουν αντιστοιχιστεί σε σταθερό, όπως ip_hash) και διάφορα εργαλεία εξισορρόπησης φορτίου θα παρέχουν αυτήν τη ρύθμιση χρόνου αναμονής συνεδρίας, LVS, apache κ.λπ. Ακόμη και η γλώσσα PHP παρέχει μια session.gc_maxlifetime για να ορίσετε το χρόνο αναμονής της συνεδρίας Ο χρόνος αναμονής της συνεδρίας θα πρέπει να οριστεί περισσότερο από τον χρόνο επιβίωσης της συνεδρίας, γεγονός που μπορεί να μειώσει την ανάγκη συγχρονισμού των συνεδριών, αλλά δεν μπορεί να εξαλειφθεί. Επομένως, ο συγχρονισμός των συνεδριών πρέπει ακόμα να γίνει.
Τρίτον, συγχρονισμός συνεδρίας Γιατί συγχρονισμός συνεδρίας, έχει αναφερθεί όταν μιλάμε για διατήρηση συνεδρίας. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Τρεις μέθοδοι συγχρονισμού περιόδων λειτουργίας σε ένα σύμπλεγμα Web
Υπάρχουν τρεις μέθοδοι συγχρονισμού περιόδων σύνδεσης σε ένα σύμπλεγμα web
Αφού κάνετε ένα σύμπλεγμα ιστού, σίγουρα θα εξετάσετε πρώτα τον συγχρονισμό συνεδρίας, επειδή μετά την εξισορρόπηση φορτίου, η ίδια πρόσβαση IP στην ίδια σελίδα θα εκχωρηθεί σε διαφορετικούς διακομιστές. Έτσι, αυτό το άρθρο παρέχει τρεις διαφορετικούς τρόπους επίλυσης αυτού του προβλήματος ανάλογα με αυτήν την κατάσταση: Αρχικά, χρησιμοποιήστε τη βάση δεδομένων για να συγχρονίσετε τη συνεδρία Δεν χρησιμοποίησα αυτήν τη μέθοδο όταν έκανα συγχρονισμό περιόδων λειτουργίας πολλών διακομιστών, αλλά αν έπρεπε να χρησιμοποιήσω αυτήν τη μέθοδο, σκέφτηκα δύο μεθόδους: 1. Χρησιμοποιήστε έναν υπολογιστή χαμηλού επιπέδου για να δημιουργήσετε μια βάση δεδομένων για να αποθηκεύσετε τη συνεδρία του διακομιστή ιστού ή δημιουργήστε αυτήν την ειδική βάση δεδομένων στον διακομιστή αρχείων, όταν ο χρήστης αποκτήσει πρόσβαση στον διακομιστή ιστού, θα μεταβεί σε αυτήν την ειδική βάση δεδομένων για να ελέγξει την κατάσταση της συνεδρίας για να επιτύχει τον σκοπό του συγχρονισμού συνεδρίας. 2. Αυτή η μέθοδος είναι να τοποθετήσετε τον πίνακα όπου είναι αποθηκευμένη η περίοδος σύνδεσης μαζί με άλλους πίνακες βάσης δεδομένων, εάν η mysql είναι επίσης ομαδοποιημένη, κάθε κόμβος mysql πρέπει να έχει αυτόν τον πίνακα και ο πίνακας δεδομένων αυτού του πίνακα συνεδρίας πρέπει να συγχρονίζεται σε πραγματικό χρόνο. Επεξήγηση: Η χρήση της βάσης δεδομένων για συγχρονισμό συνεδριών θα αυξήσει την επιβάρυνση της βάσης δεδομένων, η οποία είναι εγγενώς επιρρεπής σε σημεία συμφόρησης. Η πρώτη από τις δύο παραπάνω μεθόδους είναι καλύτερη, η οποία διαχωρίζει τον πίνακα όπου τοποθετείται ανεξάρτητα η συνεδρία, μειώνοντας την επιβάρυνση της πραγματικής βάσης δεδομένων 2. Χρησιμοποιήστε cookies για συγχρονισμό περιόδων σύνδεσης Η περίοδος λειτουργίας είναι η κατάσταση του αρχείου που είναι αποθηκευμένη στην πλευρά του διακομιστή και το cookie είναι η κατάσταση του αρχείου στον πελάτη, πώς να επιτευχθεί συγχρονισμός; Η μέθοδος είναι πολύ απλή, δηλαδή να τοποθετήσετε τη συνεδρία που δημιουργείται από τη σελίδα επίσκεψης του χρήστη στο cookie, δηλαδή να χρησιμοποιήσετε το cookie ως σταθμό αναμετάδοσης. Επισκέπτεστε τον διακομιστή ιστού Α, δημιουργείτε μια περίοδο λειτουργίας και την τοποθετείτε στο cookie, η πρόσβασή σας εκχωρείται στον διακομιστή ιστού Β, αυτή τη στιγμή, ο διακομιστής ιστού Β κρίνει πρώτα εάν ο διακομιστής έχει αυτήν τη συνεδρία, εάν όχι, πηγαίνετε να δείτε αν υπάρχει αυτή η περίοδος λειτουργίας στο cookie του πελάτη, εάν όχι, σημαίνει ότι η περίοδος λειτουργίας δεν αποθηκεύεται πραγματικά, εάν υπάρχει στο cookie, Συγχρονίστε το sessoin του cookie με τον διακομιστή ιστού Β, έτσι ώστε η περίοδος λειτουργίας να μπορεί να συγχρονιστεί. Σημείωση: Αυτή η μέθοδος είναι απλή και βολική στην εφαρμογή και δεν θα αυξήσει την επιβάρυνση της βάσης δεδομένων, αλλά εάν ο πελάτης απενεργοποιήσει τα cookies, τότε η περίοδος λειτουργίας δεν μπορεί να συγχρονιστεί, γεγονός που θα επιφέρει απώλειες στον ιστότοπο. Τα cookies δεν είναι ιδιαίτερα ασφαλή και παρόλο που έχουν κρυπτογραφηθεί, μπορούν ακόμα να πλαστογραφηθούν.
3. Χρησιμοποιήστε το memcache για συγχρονισμό περιόδων σύνδεσης Το Memcache μπορεί να διανεμηθεί και χωρίς αυτή τη λειτουργία, δεν μπορεί να χρησιμοποιηθεί για συγχρονισμό συνεδρίας. Μπορεί να συνδυάσει τη μνήμη στον διακομιστή ιστού για να γίνει ένα "mempool", ανεξάρτητα από το ποιος διακομιστής δημιουργεί sessoin, μπορεί να τοποθετηθεί σε αυτό το "mempool" και όλα τα άλλα μπορούν να χρησιμοποιηθούν. Πλεονεκτήματα: ο συγχρονισμός των περιόδων σύνδεσης με αυτόν τον τρόπο δεν αυξάνει την επιβάρυνση της βάσης δεδομένων και η ασφάλεια βελτιώνεται σημαντικά σε σύγκριση με τη χρήση cookies και η τοποθέτηση περιόδων σύνδεσης στη μνήμη είναι πολύ πιο γρήγορη από την ανάγνωση από αρχεία. Μειονεκτήματα: το memcache διαιρεί τη μνήμη σε πολλές προδιαγραφές μπλοκ αποθήκευσης, υπάρχουν μπλοκ και μεγέθη, με αυτόν τον τρόπο καθορίζει επίσης, το memcache δεν μπορεί να χρησιμοποιήσει πλήρως τη μνήμη, θα προκαλέσει κατακερματισμό της μνήμης, εάν το μπλοκ αποθήκευσης είναι ανεπαρκές, θα προκαλέσει επίσης υπερχείλιση μνήμης.
Τέταρτον, περίληψη Και οι τρεις παραπάνω μέθοδοι είναι εφικτές Η πρώτη μέθοδος, αυτή που επηρεάζει περισσότερο την ταχύτητα του συστήματος, δεν συνιστάται. Η δεύτερη μέθοδος έχει καλά αποτελέσματα, αλλά οι κίνδυνοι για την ασφάλεια είναι οι ίδιοι. Η τρίτη μέθοδος, προσωπικά πιστεύω ότι η τρίτη μέθοδος είναι η καλύτερη, συνιστώ σε όλους να τη χρησιμοποιήσουν.
|