Η κύρια λειτουργία ενός διακομιστή ιστού είναι να παρέχει περιεχόμενο από τον ιστότοπό σας όσο το δυνατόν πιο αποτελεσματικά χωρίς να τον κατακλύζει από επισκεψιμότητα ή να επιβραδύνει τους χρόνους φόρτωσης. Ένας καλός τρόπος να το σκεφτείς αυτό θα ήταν σαν την πίεση του νερού. εάν έχετε υπερβολική πίεση στο σπίτι σας από το υδραυλικό σας σύστημα, τότε τίποτα δεν θα λειτουργήσει σωστά! Ομοίως, εάν δεν υπάρχουν αρκετοί διαθέσιμοι πόροι για τον ίδιο τον διακομιστή ιστού όταν εργάζεται σκληρά προσπαθώντας να στείλει δεδομένα πίσω από τους σωλήνες του, τότε τα πράγματα θα αρχίσουν να γίνονται ακατάστατα πολύ γρήγορα!
Οι τρεις πιο δημοφιλείς τύποι διακομιστών που χρησιμοποιούνται σήμερα περιλαμβάνουν: Mongrels (γραμμένο σε Ruby), Apache (γραμμένο κυρίως σε C/C++) και Nginx (γραμμένο εξ ολοκλήρου σε C). Και ποιον να επιλέξετε; Ας ανακαλύψουμε!
Ένας διακομιστής Ιστού είναι το μέρος ενός συστήματος υπολογιστή που ανταποκρίνεται σε αιτήματα από πελάτες (π.χ. προγράμματα περιήγησης Ιστού) για έγγραφα και αρχεία που είναι αποθηκευμένα στο σύστημα αρχείων του διακομιστή. Ο όρος μπορεί επίσης να αναφέρεται μόνο στο λογισμικό που το καθιστά δυνατό ή γενικότερα σε κάθε είδους διακομιστή σε οποιοδήποτε είδος υπολογιστή στον οποίο εκτελείται μια εφαρμογή.
Η κύρια λειτουργία ενός διακομιστή ιστού είναι να παρέχει περιεχόμενο από τον ιστότοπό σας όσο το δυνατόν πιο αποτελεσματικά χωρίς να τον κατακλύζει από επισκεψιμότητα ή να επιβραδύνει τους χρόνους φόρτωσης. Ένας καλός τρόπος να το σκεφτείς αυτό θα ήταν σαν την πίεση του νερού. εάν έχετε υπερβολική πίεση στο σπίτι σας από το υδραυλικό σας σύστημα, τότε τίποτα δεν θα λειτουργήσει σωστά! Ομοίως, εάν δεν υπάρχουν αρκετοί διαθέσιμοι πόροι για τον ίδιο τον διακομιστή ιστού όταν εργάζεται σκληρά προσπαθώντας να στείλει δεδομένα πίσω από τους σωλήνες του, τότε τα πράγματα θα αρχίσουν να γίνονται ακατάστατα πολύ γρήγορα!
Οι τρεις πιο δημοφιλείς τύποι διακομιστών που χρησιμοποιούνται σήμερα περιλαμβάνουν τους Mongrels (γραμμένοι σε Ruby), τον Apache (γραμμένο κυρίως σε C/C++) και τον Nginx (γραμμένο εξ ολοκλήρου σε C).
Όλοι έχουν μια μακρά ιστορία που χρονολογείται από τις πρώτες μέρες του Διαδικτύου και έχουν αποδείξει την αξιοπιστία τους με την πάροδο του χρόνου. Και οι τρεις διακομιστές είναι ανοιχτού κώδικα, πράγμα που σημαίνει ότι μπορείτε να τροποποιήσετε τον κώδικα μόνοι σας ή ακόμα και να τον χρησιμοποιήσετε δωρεάν . Αυτό σημαίνει επίσης ότι τυχόν σφάλματα που εντοπίστηκαν στο λογισμικό θα διορθωθούν από μια κοινότητα προγραμματιστών που μοιράζονται επίσης τη δουλειά τους. Είναι όλα cross-platform, που σημαίνει ότι τρέχουν σε πολλά λειτουργικά συστήματα (Windows και Linux, για παράδειγμα).
Ο Mongrel είναι ένας διακομιστής ιστού για τη Ruby. Είναι γρήγορο, αξιόπιστο και επεκτάσιμο. Η Mongrel δεν είναι τόσο καλή επιλογή για εφαρμογές web που είναι εντάσεως CPU, επειδή η ruby δεν είναι πολύ γρήγορη γλώσσα.
Το Mongrel εφαρμόζει ένα μοντέλο μίας διεργασίας όπου τα αιτήματα χειρίζονται από ένα νήμα ανά σύνδεση (ή λιγότερο εάν το ρυθμίσετε να το κάνει). Αυτό έχει ως αποτέλεσμα γρήγορους χρόνους απόκρισης, καθώς δεν χρειάζεται να περιμένετε για λειτουργίες I/O πριν επιστρέψετε τον έλεγχο στον χρήστη μετά από κάθε αίτημα.
Ο Apache είναι ο πιο δημοφιλής διακομιστής ιστού στον κόσμο και για καλό λόγο. Είναι δωρεάν, ανοιχτού κώδικα και cross-platform (που σημαίνει ότι μπορεί να τρέξει σε μεγάλη ποικιλία λειτουργικών συστημάτων). Το Apache γράφτηκε επίσης σε C++ που το κάνει απίστευτα γρήγορο.
Ο Apache έχει επίσης μια πολύ μεγάλη κοινότητα από πίσω του με πολλές διαθέσιμες ενότητες που σας επιτρέπουν να επεκτείνετε τη λειτουργικότητά του πέρα από αυτό που υποστηρίζεται εγγενώς από προεπιλογή. Το σύστημα πρόσθετων σάς επιτρέπει να προσθέσετε οτιδήποτε, από πρόσθετες μονάδες ασφαλείας μέχρι πολύπλοκες εφαρμογές όπως διακομιστές προσωρινής αποθήκευσης memcached ή redis caching.
Το μόνο μειονέκτημα του Apache είναι ότι απαιτεί κάποιες τεχνικές γνώσεις εάν θέλετε απόλυτο έλεγχο του τρόπου λειτουργίας του ιστότοπού σας, αλλά μόλις το αποκτήσετε, υπάρχουν λίγα όρια στο τι μπορείτε να επιτύχετε με αυτό το λογισμικό!
Ο Nginx είναι ένας δημοφιλής διακομιστής ιστού ανοιχτού κώδικα που έχει σχεδιαστεί για να χειρίζεται υψηλή ταυτόχρονη χρήση και έχει επίσης μια αρχιτεκτονική που βασίζεται σε συμβάντα.
Το Nginx χρησιμοποιεί ασύγχρονες εισόδους/εξόδους για τον χειρισμό αιτημάτων, κάτι που το βοηθά να επιτύχει υψηλότερη απόδοση από άλλους διακομιστές ιστού. Αυτό οφείλεται στο γεγονός ότι το Nginx δεν χρειάζεται να περιμένει απαντήσεις από διακομιστές upstream για να στείλει δεδομένα πίσω στον πελάτη. Αντίθετα, το Nginx στέλνει δεδομένα χρησιμοποιώντας πολλαπλά νήματα εκτέλεσης (ένα ανά σύνδεση). Διαθέτει επίσης αρθρωτό σχεδιασμό που σας επιτρέπει να συμπεριλάβετε μόνο ορισμένα μέρη της στοίβας εφαρμογών στον διακομιστή σας, εάν δεν τα χρειάζεστε όλα. Τα πιο κοινά σύνολα χαρακτηριστικών περιλαμβάνουν:
Διακομιστής Ιστού (HTTP/1.1)
Reverse proxy/load balancer (TCP)
Takeaway: Εάν έχετε ιστότοπο, χρειάζεται διακομιστή ιστού. Λάβετε υπόψη αυτά τα πλεονεκτήματα και τα μειονεκτήματα όταν αποφασίζετε μεταξύ Apache, Mongrel ή Nginx
Εάν έχετε ιστότοπο, χρειάζεται διακομιστή ιστού.
Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα του καθενός;
Το Mongrel είναι καλό για μικρές τοποθεσίες που δεν αναμένεται να αναπτυχθούν.
Το Nginx είναι καλό για μεγάλους ιστότοπους με πολλούς ταυτόχρονους χρήστες.
Το Apache χειρίζεται καλά τις αιχμές της κυκλοφορίας επειδή μπορεί να δημιουργήσει νέες διεργασίες κατόπιν ζήτησης και να τις χειριστεί παράλληλα με τις υπάρχουσες διεργασίες.
Τι έχουν κοινό? Όλοι χρησιμοποιούν νήματα για να χειρίζονται αιτήματα (αντί να έχουν μόνο μία διεργασία που κάνει τα πάντα). Αυτό σημαίνει ότι πολλαπλές αιτήσεις μπορούν να αντιμετωπιστούν από την ίδια διαδικασία ταυτόχρονα. Εάν ένα αίτημα διαρκεί πολύ, άλλα αιτήματα δεν χρειάζεται να περιμένουν τη σειρά τους.
Λοιπόν, σκέφτεστε έναν διακομιστή ιστού. Τα καλά νέα είναι ότι έχετε τρεις εξαιρετικές επιλογές για να διαλέξετε. Εξετάσαμε τα πλεονεκτήματα και τα μειονεκτήματα καθενός σε αυτήν την ανάρτηση ιστολογίου. Εάν έχετε επιπλέον ερωτήσεις μετά την ανάγνωση αυτής της ανάρτησης ιστολογίου, ενημερώστε μας στην παρακάτω ενότητα σχολίων ή επικοινωνήστε μαζί μας μέσω της φόρμας επικοινωνίας μας.