Πίνακας περιεχομένων[Κρύβω][Προβολή]
- 1. Τι εννοείτε με τον όρο σχεδιασμός συστήματος;
- 2. Ποια είναι τα πιο σημαντικά χαρακτηριστικά ενός σχεδιαστή συστήματος;
- 3. Τι ακριβώς είναι το θεώρημα CAP;
- 4. Τι καταλαβαίνετε με την εξισορρόπηση φορτίου;
- 5. Ποια είναι η διαφορά μεταξύ του ασύγχρονου προγραμματισμού και του παράλληλου προγραμματισμού;
- 6. Ποια είναι η διαφορά μεταξύ οριζόντιας και κάθετης κλιμάκωσης;
- 7. Τι ακριβώς εννοείτε με τον όρο καθυστέρηση, απόδοση και διαθεσιμότητα συστήματος;
- 8. Ποιες είναι οι ιδιότητες του ΟΞΥ;
- 9. Τι ακριβώς είναι το sharding;
- 10. Τι είναι το CDN;
- 11. Γιατί να χρησιμοποιήσετε το CDN;
- 12. Ποια είναι η διαφορά μεταξύ διαμοιρασμού και κατάτμησης;
- 13. Τι ακριβώς είναι η προσωρινή αποθήκευση;
- 14. Τι είναι οι διακομιστές CDN edge;
- 15. Ποια είναι τα διαφορετικά μοτίβα συνοχής για το σχεδιασμό του συστήματος;
- 16. Τι εννοείτε με τον όρο αισιόδοξο κλείδωμα;
- 17. Τι ακριβώς εννοείτε με τον όρο «εκλογή αρχηγού»;
- 18. Ποια είναι η προσέγγισή σας για το σχεδιασμό μιας υπηρεσίας συντόμευσης διευθύνσεων URL τύπου TinyURL;
- 19. Ποια είναι η προσέγγισή σας στο σχεδιασμό του twitter;
- 20. Δημιουργήστε το σύστημα ειδήσεων για το Facebook
- 21. Τι είναι η ιδιότητα BASE ενός συστήματος;
- 22. Τι είναι το Load Balancing With IP Address Affinity Technique;
- 23. Τι ακριβώς είναι οι αλγόριθμοι αντικατάστασης προσωρινής μνήμης (ή Πολιτικής εξώθησης);
- 24. Τι ακριβώς εννοείτε με τον όρο κατανεμημένη συναλλαγή;
- 25. Τι ακριβώς είναι η πείνα;
- Συμπέρασμα
Πριν ξεκινήσετε, σας συνιστούμε να διαβάσετε το δικό μας εισαγωγικός οδηγός για το σχεδιασμό συστήματος για να ανανεώσετε τις θεμελιώδεις γνώσεις σας.
Όταν κάνετε συνέντευξη για μια θέση που απαιτεί γνώσεις σχεδιασμού συστήματος, έχετε την ευκαιρία να μιλήσετε για το ιστορικό σας και να δείξετε την ικανότητά σας να αναπτύσσετε περίπλοκα συστήματα.
Όταν μιλάτε με έναν πιθανό εργοδότη, ο τρόπος που εκφράζετε την πείρα σας μπορεί να σας βοηθήσει να αποδείξετε ότι είστε ικανός υποψήφιος για τη θέση.
Μπορείτε να προετοιμαστείτε για τη συνέντευξη εργασίας σας μαθαίνοντας βασικές έννοιες σχεδιασμού και σκεπτόμενοι πώς θα απαντήσετε σε ερωτήσεις σχετικά με αυτές. Θα εξετάσουμε μερικές τυπικές ερωτήσεις και απαντήσεις συνέντευξης σχεδιασμού συστήματος σε αυτήν την ανάρτηση για να σας βοηθήσουμε να προετοιμαστείτε για την επόμενη συνέντευξή σας.
1. Τι εννοείτε με τον όρο σχεδιασμός συστήματος;
Η διαδικασία καθορισμού των χαρακτηριστικών του συστήματος, συμπεριλαμβανομένων των μονάδων, της αρχιτεκτονικής, των στοιχείων και των διεπαφών τους, καθώς και δεδομένων που βασίζονται σε προκαθορισμένα κριτήρια είναι γνωστή ως σχεδιασμός συστήματος.
Είναι η διαδικασία καθορισμού, δημιουργίας και σχεδιασμού συστημάτων για την ικανοποίηση των συγκεκριμένων στόχων και στόχων μιας εταιρείας ή ενός οργανισμού. Ο σχεδιασμός του συστήματος αφορά περισσότερο την ανάλυση συστήματος, τα αρχιτεκτονικά μοτίβα, τα API, τα μοτίβα σχεδίασης και τη συγκόλληση όλων αυτών παρά για την κωδικοποίηση.
2. Ποια είναι τα πιο σημαντικά χαρακτηριστικά ενός σχεδιαστή συστήματος;
- Αλληλεπίδραση χρήστη
- Εξωτερική κλήση API
- Διαδικασίες εκτός σύνδεσης
3. Τι ακριβώς είναι το θεώρημα CAP;
Σύμφωνα με το θεώρημα CAP (Consistency-Availability-Partition Tolerance), ένα κατανεμημένο σύστημα δεν μπορεί να εξασφαλίσει τα C, A και P ταυτόχρονα. Μπορεί να παράσχει μόνο δύο από τις τρεις διαβεβαιώσεις το πολύ. Ας χρησιμοποιήσουμε ένα κατανεμημένο σύστημα βάσης δεδομένων για να μας βοηθήσει να το κατανοήσουμε αυτό.
- Συνέπεια: Αυτό προσδιορίζει ότι τα δεδομένα πρέπει να παραμένουν συνεπή μόλις ολοκληρωθεί μια συναλλαγή βάσης δεδομένων. Για παράδειγμα, όλα τα ερωτήματα θα πρέπει να επιστρέφουν την ίδια απάντηση μετά από μια ενημέρωση βάσης δεδομένων.
- Διαθεσιμότητα: Οι βάσεις δεδομένων πρέπει να είναι διαθέσιμες και να ανταποκρίνονται ανά πάσα στιγμή.
- Ανοχή κατάτμησης: Ακόμα κι αν η επικοινωνία γίνει προβληματική, το σύστημα βάσης δεδομένων θα πρέπει να συνεχίσει να λειτουργεί.
4. Τι καταλαβαίνετε με την εξισορρόπηση φορτίου;
Εξισορρόπηση φορτίου είναι η διαδικασία αποτελεσματικής διασποράς της εισερχόμενης κίνησης μεταξύ ενός συνόλου διακομιστών υποστήριξης. Αυτά αναφέρονται ως ομάδες διακομιστών. Οι σύγχρονοι ιστότοποι έχουν κατασκευαστεί για να χειρίζονται εκατομμύρια ερωτήματα από πελάτες και να απαντούν σε αυτά γρήγορα και αξιόπιστα. Θα χρειαστούν περισσότεροι διακομιστές για να χειριστούν αυτές τις απαιτήσεις.
Σε αυτήν την περίπτωση, είναι σημαντικό να κατανείμετε αποτελεσματικά την κυκλοφορία αιτημάτων μεταξύ κάθε διακομιστή για να αποφύγετε την υπερβολική επιβάρυνση. Η συσκευή εξισορρόπησης φορτίου λειτουργεί ως αστυνομικός της κυκλοφορίας, αναχαιτίζοντας αιτήματα και δρομολογώντας τα μεταξύ των διαθέσιμων διακομιστών, έτσι ώστε κανένας διακομιστής να μην επιβαρύνεται υπερβολικά, υποβαθμίζοντας ενδεχομένως την απόδοση της εφαρμογής.
5. Ποια είναι η διαφορά μεταξύ του ασύγχρονου προγραμματισμού και του παράλληλου προγραμματισμού;
Όταν εκτελείτε οτιδήποτε ασύγχρονα, αυτό σημαίνει ότι δεν χρειάζεται να περιμένετε να τελειώσει για να μπορέσετε να προχωρήσετε σε κάτι άλλο. Ο παραλληλισμός αναφέρεται στην ταυτόχρονη εκτέλεση πολλών εργασιών.
Όταν μπορείς να χωρίσεις τις δουλειές σε διαφορετικά κομμάτια εργασίας, ο παραλληλισμός λειτουργεί αποτελεσματικά. Το Async και το Callback είναι ένα μέσο (εργαλείο ή μηχανισμός) για την αντιπροσώπευση της ταυτόχρονης λειτουργίας, δηλαδή μια ομάδα οντοτήτων που θα μπορούσαν να επικοινωνούν και να μοιράζονται πόρους.
6. Ποια είναι η διαφορά μεταξύ οριζόντιας και κάθετης κλιμάκωσης;
Η προσθήκη νέου υπολογιστικού εξοπλισμού σε ένα δίκτυο που κατανέμει τη ζήτηση επεξεργασίας και μνήμης σε ένα διεσπαρμένο δίκτυο συσκευών αναφέρεται ως οριζόντια κλιμάκωση. Με απλά λόγια, νέες παρουσίες διακομιστή προστίθενται στο τρέχον pool και ο φόρτος κυκλοφορίας κατανέμεται αποτελεσματικά μεταξύ αυτών των συσκευών.
Η κατακόρυφη κλιμάκωση αναφέρεται στην έννοια της επέκτασης της χωρητικότητας πόρων ενός μεμονωμένου υπολογιστή με την προσθήκη μνήμης RAM, αποδοτικών CPU ή μετεγκατάστασης σε ένα νέο μηχάνημα με υψηλότερη χωρητικότητα. Η λειτουργικότητα του διακομιστή μπορεί να αυξηθεί χωρίς να απαιτούνται αλλαγές προγραμματισμού.
7. Τι ακριβώς εννοείτε με τον όρο καθυστέρηση, απόδοση και διαθεσιμότητα συστήματος;
Η απόδοση είναι μια ουσιαστική πτυχή του σχεδιασμού του συστήματος, καθώς συμβάλλει στην ταχύτητα και την αξιοπιστία των υπηρεσιών μας. Τα τρία πιο σημαντικά μέτρα απόδοσης είναι τα ακόλουθα:
- Ο χρόνος που χρειάζεται για να παραδοθεί ένα μεμονωμένο μήνυμα σε χιλιοστά του δευτερολέπτου ονομάζεται λανθάνουσα κατάσταση.
- Η ποσότητα των δεδομένων που μεταφέρονται επιτυχώς μέσω ενός συστήματος σε μια συγκεκριμένη χρονική περίοδο αναφέρεται ως διεκπεραίωση. Για τη μέτρησή του χρησιμοποιούνται bits ανά δευτερόλεπτο.
- Το χρονικό διάστημα που ένα σύστημα είναι διαθέσιμο για να απαντήσει σε ερωτήματα καθορίζεται από τη διαθεσιμότητά του. System Uptime / (System Uptime+Downtime) είναι ο τύπος για τον υπολογισμό του.
8. Ποιες είναι οι ιδιότητες του ΟΞΥ;
- Atomicity: Διαβεβαιώνει ότι οι αλλαγές στη βάση δεδομένων είναι είτε όλες είτε καμία.
- Συνέπεια: Οι τιμές δεδομένων στη βάση δεδομένων είναι συνεπείς.
- Απομόνωση: Αναφέρεται στον διαχωρισμό δύο συναλλαγών.
- Ανθεκτικότητα: Τα δεδομένα διατηρούνται ακόμη και αν ο διακομιστής αποτύχει.
9. Τι ακριβώς είναι το sharding;
Sharding είναι η τεχνική της διαίρεσης ενός τεράστιου λογικού δεδομένων σε πολλές βάσεις δεδομένων. Αναφέρεται επίσης στον οριζόντιο διαχωρισμό δεδομένων επειδή τα δεδομένα θα αποθηκευτούν σε πολλούς υπολογιστές. Ως αποτέλεσμα, μια κοινόχρηστη βάση δεδομένων μπορεί να χειριστεί περισσότερα ερωτήματα από έναν τεράστιο υπολογιστή.
10. Τι είναι το CDN;
Ένα δίκτυο παράδοσης περιεχομένου είναι ένα παγκόσμιο δίκτυο υπολογιστών που συνεργάζονται για την ταχεία παροχή πληροφοριών στο Διαδίκτυο. Επιτρέπει τη γρήγορη παράδοση στοιχείων όπως σελίδες HTML, αρχεία JavaScript, φύλλα στυλ, εικόνες και βίντεο που είναι απαραίτητα για τη φόρτωση περιεχομένου στο Διαδίκτυο.
11. Γιατί να χρησιμοποιήσετε το CDN;
- Λαμβάνοντας υπόψη ότι οι στατικοί πόροι αποτελούν περίπου το 80% ενός ιστότοπου, η υιοθέτηση ενός CDN μειώνει σημαντικά την πίεση στον διακομιστή προέλευσης.
- Καθώς υπάρχει λιγότερη απόσταση για να ταξιδέψετε, οι πληροφορίες θα παρέχονται ταχύτερα στους κατόχους ιστότοπων που έχουν επισκέπτες από πολλές γεωγραφικές περιοχές.
- Οι χρήστες των CDN επωφελούνται επίσης από τη δυνατότητα γρήγορης αύξησης και μείωσης της κλίμακας ως απόκριση στις αυξήσεις της κυκλοφορίας.
12. Ποια είναι η διαφορά μεταξύ διαμοιρασμού και κατάτμησης;
Διαμοιρασμός βάσεων δεδομένων – Η κοινή χρήση βάσεων δεδομένων είναι μια μέθοδος κατάτμησης ενός ενιαίου δεδομένων σε πολλές βάσεις δεδομένων, έτσι ώστε να μπορεί να αποθηκευτεί σε διαφορετικούς σταθμούς εργασίας. Τα μεγαλύτερα σύνολα δεδομένων μπορούν να χωριστούν σε μικρότερα κομμάτια και να αποθηκευτούν σε πολλούς κόμβους δεδομένων, αυξάνοντας τη συνολική χωρητικότητα αποθήκευσης του συστήματος.
Με τη διάδοση των δεδομένων σε πολλά μηχανήματα, μια κοινόχρηστη βάση δεδομένων μπορεί να χειριστεί περισσότερα ερωτήματα από ένα μεμονωμένο σύστημα.
Η κατάτμηση βάσεων δεδομένων είναι η διαδικασία διαίρεσης των αποθηκευμένων αντικειμένων της βάσης δεδομένων (πίνακες, ευρετήρια και προβολές) σε ξεχωριστά τμήματα. Για να αυξηθεί η δυνατότητα ελέγχου, η απόδοση και η διαθεσιμότητα, τα μεγάλα αντικείμενα βάσης δεδομένων διαμερίζονται.
Σε ορισμένες περιπτώσεις, η κατάτμηση μπορεί να βελτιώσει την ταχύτητα κατά την πρόσβαση σε δεδομένα με διαμερίσματα. Η κατάτμηση μπορεί να μειώσει το μέγεθος του ευρετηρίου και να αυξήσει την πιθανότητα εντοπισμού των πιο απαραίτητων ευρετηρίων στη μνήμη λειτουργώντας ως ηγετική στήλη σε ευρετήρια.
13. Τι ακριβώς είναι η προσωρινή αποθήκευση;
Η προσωρινή αποθήκευση είναι η τεχνική διατήρησης αντιγράφων αρχείων σε μια προσωρινή περιοχή αποθήκευσης γνωστή ως προσωρινή μνήμη, η οποία επιταχύνει την πρόσβαση στα δεδομένα και μειώνει την καθυστέρηση του ιστότοπου. Μόνο ένας συγκεκριμένος όγκος δεδομένων μπορεί να αποθηκευτεί στην κρυφή μνήμη.
Ως αποτέλεσμα, ο καθορισμός τεχνικών ενημέρωσης της προσωρινής μνήμης που είναι πιο κατάλληλες για τους επιχειρηματικούς στόχους είναι κρίσιμος.
14. Τι είναι οι διακομιστές CDN edge;
Οι διακομιστές CDN που αποθηκεύουν προσωρινά το υλικό που αποκτήθηκε από τον διακομιστή προέλευσης ή το σύμπλεγμα αποθήκευσης είναι γνωστοί ως διακομιστές αιχμής. Το σημείο παρουσίας είναι ένας όρος που χρησιμοποιείται συχνά για να περιγράψει διακομιστές ακμών (POP).
Οι διακομιστές ακμών είναι τοποθετημένοι φυσικά σε ένα POP. Σε αυτό το POP, οι πληροφορίες ενδέχεται να αποθηκευτούν στην κρυφή μνήμη από πολλούς διακομιστές άκρων.
Η δυνατότητα παροχής τμημάτων ενός ιστότοπου από πολλά σημεία μειώνει την απόσταση μεταξύ του επισκέπτη και του διακομιστή ιστού, με αποτέλεσμα χαμηλότερο λανθάνοντα χρόνο. Οι διακομιστές CDN edge επιτυγχάνουν αυτόν τον ακριβή στόχο.
15. Ποια είναι τα διαφορετικά μοτίβα συνοχής για το σχεδιασμό του συστήματος;
Κάθε αίτημα ανάγνωσης θα πρέπει να ανακτά τα πιο πρόσφατα γραπτά δεδομένα, σύμφωνα με το θεώρημα CAP. Όταν πολλά αντίγραφα δεδομένων είναι προσβάσιμα, ο συγχρονισμός τους έτσι ώστε οι πελάτες να λαμβάνουν νέα δεδομένα σε συνεχή βάση γίνεται δυσκολία. Τα ακόλουθα είναι τα πιθανά μοτίβα συνοχής:
- Αδύναμη συνέπεια: Μετά από εγγραφή δεδομένων, το αίτημα ανάγνωσης μπορεί ή δεν μπορεί να λάβει τα ενημερωμένα δεδομένα. Αυτό το επίπεδο σταθερότητας είναι ιδανικό για εφαρμογές σε πραγματικό χρόνο, όπως VoIP, συνομιλία μέσω βίντεο και παιχνίδια για πολλούς παίκτες.
- Ενδεχόμενη συνέπεια: Οι αναγνώσεις θα προβάλλουν τελικά τα πιο πρόσφατα δεδομένα μέσα σε χιλιοστά του δευτερολέπτου μετά την εγγραφή των δεδομένων. Τα δεδομένα αντιγράφονται ασύγχρονα σε αυτήν την περίπτωση. Τα συστήματα DNS και email είναι παραδείγματα αυτού. Αυτό λειτουργεί αποτελεσματικά σε συστήματα με υψηλή διαθεσιμότητα.
- Ισχυρή συνέπεια: Μετά από μια εγγραφή δεδομένων, οι μελλοντικοί αναγνώστες θα δουν τα πιο πρόσφατα δεδομένα. Τα δεδομένα αντιγράφονται συγχρονισμένα σε αυτήν την περίπτωση. Αυτό μπορεί να παρατηρηθεί σε RDBMS και συστήματα αρχείων, τα οποία είναι κατάλληλα για μεταφορά δεδομένων.
16. Τι εννοείτε με τον όρο αισιόδοξο κλείδωμα;
Το αισιόδοξο κλείδωμα είναι ένας μηχανισμός στον οποίο διαβάζετε μια εγγραφή, σημειώνετε έναν αριθμό έκδοσης (εναλλακτικοί τρόποι περιλαμβάνουν ημερομηνίες, χρονικές σημάνσεις ή αθροίσματα ελέγχου/κατακερματισμό) και, στη συνέχεια, ελέγχετε ξανά ότι η έκδοση δεν έχει αλλάξει πριν την επαναγράψετε.
Όταν γράφετε την εγγραφή πίσω, χρησιμοποιείτε την έκδοση για να φιλτράρετε την ενημέρωση για να βεβαιωθείτε ότι είναι ατομική. (δηλαδή, δεν έχει αλλάξει από τη στιγμή που ελέγχετε την έκδοση και τη στιγμή που γράφετε την εγγραφή στο δίσκο) και να την ενημερώνετε ταυτόχρονα.
17. Τι ακριβώς εννοείτε με τον όρο «εκλογή αρχηγού»;
Σε ένα κατανεμημένο σύστημα με πολλούς διακομιστές που συμβάλλουν στη διαθεσιμότητα της εφαρμογής, μπορεί να υπάρχουν φορές που μόνο ένας διακομιστής είναι υπεύθυνος για την ενημέρωση των API τρίτων, καθώς πολλοί διακομιστές ενδέχεται να προκαλέσουν προβλήματα κατά τη χρήση των API.
Αυτός ο διακομιστής είναι γνωστός ως ο κύριος διακομιστής και η διαδικασία για την επιλογή του είναι γνωστή ως εκλογή αρχηγού. Όταν ο κεντρικός διακομιστής αποτυγχάνει σε ένα κατανεμημένο σύστημα, οι διακομιστές πρέπει να παρατηρήσουν την αποτυχία και να επιλέξουν έναν νέο αρχηγό. Χρησιμοποιώντας μια τεχνική συναίνεσης, αυτή η προσέγγιση είναι η πλέον κατάλληλη για εφαρμογές υψηλής διαθεσιμότητας και ισχυρής συνέπειας.
18. Ποια είναι η προσέγγισή σας για το σχεδιασμό μιας υπηρεσίας συντόμευσης διευθύνσεων URL τύπου TinyURL;
Το TinyURL μετατρέπει μια μεγάλη διεύθυνση URL σε μια μοναδική, μοναδική σύντομη διεύθυνση URL. Αυτές οι τεχνολογίες μπορούν επίσης να αποδεχτούν μια σύντομη διεύθυνση URL και να επιστρέψουν την πλήρη διεύθυνση URL.
Ποιες είναι μερικές από τις κρίσιμες ιδιότητες;
- Δημιουργήστε μια διεύθυνση URL που είναι μικρότερη από την αρχική.
- Διατηρήστε τη μεγαλύτερη διεύθυνση URL και αντικαταστήστε την με τη συντομότερη.
- Να επιτρέπεται η ανακατεύθυνση σε σύντομες διευθύνσεις URL.
- Υποστηρίζονται σύντομες διευθύνσεις URL με προσαρμοσμένα ονόματα.
- Χειριστείτε πολλές ερωτήσεις ταυτόχρονα.
Ποια είναι τα πιο διαδεδομένα προβλήματα;
- Πώς παρακολουθείτε την αποθήκευση της βάσης δεδομένων;
- Τι συμβαίνει εάν το φορτίο χρήστη υπερβαίνει τις προσδοκίες;
- Τι γίνεται αν δύο άτομα χρησιμοποιούν την ίδια προσαρμοσμένη διεύθυνση URL;
Εξετάστε τις ακόλουθες προτάσεις:
- Ο κατακερματισμός είναι μια έννοια που μπορεί να χρησιμοποιηθεί για τη σύνδεση παλαιών και νέων διευθύνσεων URL.
- REST API μπορεί να χρησιμοποιηθεί για να χειριστεί την επικοινωνία στο μπροστινό μέρος και να εξισορροπήσει το βαρύ φορτίο.
- Το Multithreading είναι μια έννοια που σας επιτρέπει να χειρίζεστε πολλά αιτήματα ταυτόχρονα.
- Οι αρχικές διευθύνσεις URL αποθηκεύονται σε βάσεις δεδομένων NoSQL.
19. Ποια είναι η προσέγγισή σας στο σχεδιασμό του twitter;
Απαιτήσεις που δίνονται:
- Αποστολή tweets
- Ακολουθώντας άλλους χρήστες
- Tweet feed/ροή ειδήσεων
- Το σύστημα είναι επεκτάσιμο
- Φορτώνεται γρήγορα
- Το σύστημα είναι αξιόπιστο
Μπορείτε να αρχίσετε να σκέφτεστε τον σχεδιασμό του API του Twitter όταν καθορίσετε τα κριτήρια. Έτσι θα εμφανιζόταν:
Αρχικά, θα σκιαγραφήσουμε τα βασικά τελικά σημεία του API. Ακολουθούν μερικά παραδείγματα:
- sendTweet(μήνυμα)
- followUser(userID)
- unfollowUser(userID)
- getFeed (σελίδα)
Η αρχιτεκτονική που θα επιτρέψει αυτά τα χαρακτηριστικά μπορεί στη συνέχεια να σκιαγραφηθεί. Μπορούμε να ξεκινήσουμε με τον χρήστη που υποβάλλει ένα αίτημα διακομιστή. Μπορούμε να εγκαταστήσουμε πρόσθετους διακομιστές API πίσω από έναν εξισορροπητή φορτίου για να βοηθήσουμε στη δρομολόγηση μεγαλύτερων επιπέδων επισκεψιμότητας για να ικανοποιήσουμε την ανάγκη επεκτασιμότητας. Θα χρειαστεί να προσθέσουμε μια βάση δεδομένων για την αποθήκευση των tweets μας τώρα.
Είναι σημαντικό να θυμάστε ότι το API που παρέχουμε πρέπει να είναι επεκτάσιμο. Για να κάνουμε αυτήν την υπηρεσία επεκτάσιμη, μπορούμε να αναγνώσουμε έναν από τους διακομιστές API μας από μια ξεχωριστή κρυφή μνήμη για τη ροή ειδήσεων μας. Ενώ το κάνουμε αυτό, θα πρέπει επίσης να χρησιμοποιήσουμε έναν πάροχο τροφοδοσίας για να διατηρήσουμε ενημερωμένη την προσωρινή μνήμη των ροών μας.
20. Δημιουργήστε το σύστημα ειδήσεων για το Facebook
Το newsfeed στο Facebook επιτρέπει στους χρήστες να βλέπουν τι συμβαίνει στους κύκλους των φίλων τους, στις αγαπημένες σελίδες και στους οργανισμούς που έχουν ακολουθήσει.
Ποια είναι μερικά από τα βασικά χαρακτηριστικά;
- Δημιουργήστε μια ροή ειδήσεων με βάση δημοσιεύσεις από άλλες οντότητες συστήματος που ακολουθεί ο χρήστης.
- Κείμενο, εικόνες, ήχος και βίντεο μπορούν να χρησιμοποιηθούν σε αναρτήσεις στο Newsfeed.
- Σε πραγματικό χρόνο, προσθέστε φρέσκο περιεχόμενο στη ροή ειδήσεων του χρήστη.
Ποια είναι μερικά από τα πιο κοινά προβλήματα;
- Τι γίνεται αν η νέα ανάρτηση αργεί να εμφανιστεί στη ροή ειδήσεων;
- Μπορεί ο αλγόριθμος να διαχειριστεί μια απότομη αύξηση στη δραστηριότητα των χρηστών;
- Ποιες αναρτήσεις πρέπει να εμφανίζονται πρώτα στη ροή ειδήσεων;
Εξετάστε τις ακόλουθες προτάσεις:
- Εξετάστε τον μηχανισμό fanout για τη διανομή αναρτήσεων στους ακόλουθους.
- Εξετάστε πώς μπορεί να χρησιμοποιηθεί η κοινή χρήση για την αποτελεσματική διαχείριση υψηλών φορτίων χρηστών.
- Τα δεδομένα ροής ενός χρήστη δεν πρέπει να αντιγράφονται σε πολλούς διακομιστές. Αντίθετα, η κοινή χρήση μπορεί να γίνει με βάση τα αναγνωριστικά χρηστών.
21. Τι είναι η ιδιότητα BASE ενός συστήματος;
Οι δυνατότητες BASE είναι πανταχού παρούσες στις βάσεις δεδομένων NoSQL που εμφανίστηκαν πρόσφατα. Ένα σύστημα BASE δεν παρέχει συνέπεια, σύμφωνα με το θεώρημα CAP. Αυτό είναι ένα φτιαγμένο ακρωνύμιο που αντιστοιχεί στην ακόλουθη ιδιότητα ενός συστήματος του θεωρήματος CAP:
- Ο όρος «βασικά διαθέσιμο» σημαίνει ότι το σύστημα θα είναι διαθέσιμο ανά πάσα στιγμή.
- Μια μαλακή κατάσταση σημαίνει ότι η κατάσταση του συστήματος μπορεί να ποικίλλει με την πάροδο του χρόνου, ακόμα κι αν δεν παρέχεται είσοδος. Αυτό οφείλεται κυρίως στην τελική συνέπεια του μοντέλου.
- Δεδομένου ότι το σύστημα δεν λαμβάνει δεδομένα κατά τη διάρκεια αυτής της περιόδου, η ενδεχόμενη συνέπεια σημαίνει ότι το σύστημα θα γίνει συνεπές με την πάροδο του χρόνου.
22. Τι είναι το Load Balancing With IP Address Affinity Technique;
Μια άλλη σημαντική μέθοδος εξισορρόπησης φορτίου είναι η συγγένεια διευθύνσεων IP. Η διεύθυνση IP του πελάτη συνδέεται με έναν κόμβο διακομιστή σε αυτήν τη μέθοδο. Ένας κόμβος διακομιστή χειρίζεται όλα τα αιτήματα από μια διεύθυνση IP πελάτη.
Αυτή η μέθοδος είναι απλή στην εφαρμογή, καθώς η διεύθυνση IP είναι πάντα προσβάσιμη στην κεφαλίδα αιτήματος HTTP και δεν απαιτούνται περαιτέρω ρυθμίσεις. Εάν οι πελάτες σας είναι πιθανό να έχουν απενεργοποιήσει τα cookies, αυτή η μορφή εξισορρόπησης φορτίου μπορεί να είναι συμφέρουσα.
23. Τι ακριβώς είναι οι αλγόριθμοι αντικατάστασης προσωρινής μνήμης (ή Πολιτικής εξώθησης);
Οι αλγόριθμοι προσωρινής μνήμης (γνωστοί και ως αλγόριθμοι αντικατάστασης κρυφής μνήμης, πολιτικές αντικατάστασης προσωρινής μνήμης ή πολιτικές εξάλειψης προσωρινής μνήμης) είναι οδηγίες ή αλγόριθμοι βελτιστοποίησης που μπορεί να χρησιμοποιήσει ένα πρόγραμμα υπολογιστή ή μια δομή που διατηρείται από υλικό για τη διαχείριση μιας κρυφής μνήμης δεδομένων που είναι αποθηκευμένα στον υπολογιστή.
Η προσωρινή αποθήκευση ενισχύει την ταχύτητα με την αποθήκευση δεδομένων που χρησιμοποιήθηκαν πρόσφατα ή συχνά προσπελάστηκαν σε περιοχές μνήμης που είναι πιο γρήγορη ή λιγότερο δαπανηρή από την παραδοσιακή αποθήκευση μνήμης. Όταν η κρυφή μνήμη είναι γεμάτη, ο αλγόριθμος πρέπει να αποφασίσει ποια στοιχεία θα αφαιρέσει για να δημιουργήσει μια θέση για νέα.
24. Τι ακριβώς εννοείτε με τον όρο κατανεμημένη συναλλαγή;
Μια κατανεμημένη συναλλαγή είναι κάθε περίσταση κατά την οποία ένα μεμονωμένο γεγονός προκαλεί την αλλαγή δύο ή περισσότερων διαφορετικών πηγών δεδομένων που δεν μπορούν να δεσμευτούν ατομικά.
Γίνεται πολύ πιο περίπλοκο στον κόσμο των μικροϋπηρεσιών, καθώς κάθε υπηρεσία είναι μια μονάδα εργασίας και τις περισσότερες φορές πολλές υπηρεσίες πρέπει να συνεργάζονται για να κάνουν μια επιχείρηση επιτυχημένη.
25. Τι ακριβώς είναι η πείνα;
Όταν ένα νήμα δεν μπορεί να αποκτήσει τακτική πρόσβαση σε κοινόχρηστους πόρους, λέγεται ότι λιμοκτονεί. Αυτό συμβαίνει όταν τα «άπληστα» νήματα ή τα νήματα με υψηλότερη «προτεραιότητα» καθιστούν τους κοινόχρηστους πόρους απρόσιτους για μεγάλα χρονικά διαστήματα.
Εξετάστε ένα αντικείμενο που παρέχει μια συγχρονισμένη μέθοδο που συχνά επιστρέφει αργά. Εάν ένα νήμα καλεί επανειλημμένα αυτήν τη μέθοδο, άλλα νήματα που απαιτούν συχνή συγχρονισμένη πρόσβαση στο ίδιο αντικείμενο θα αποκλείονται συχνά.
Συμπέρασμα
Μια συνεδρία καταιγισμού ιδεών είναι το μόνο που συνεπάγεται η συνέντευξη σχεδιασμού συστήματος. Έχουμε εξετάσει τις πιο συνηθισμένες ερωτήσεις συνέντευξης Σχεδιασμού Συστήματος σε αυτήν την ανάρτηση.
Η πλήρης κατανόηση της μεθόδου που ακολουθείτε όταν δημιουργείτε ένα συγκεκριμένο σύστημα είναι κρίσιμη για να περάσετε μια συνέντευξη Σχεδιασμού Συστήματος.
Αφήστε μια απάντηση