background image

 

24 | 

P a g e

 

 

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΥΛΟΠΟΙΗΣΗ WEBSITE ΠΛΑΤΦΟΡΜΑΣ ΓΙΑ ΤΗΝ ΔΙΑΧΕΙΡΙΣΗ ΡΟΜΠΟΤΙΚΩΝ 

ΣΥΣΤΗΜΑΤΩΝ

 

 

Επίσης, χρησιμοποιείται κυρίως για τη δημιουργία προγραμμάτων δικτύου, όπως διακομιστές 

Web.  Η  μεγαλύτερη  διαφορά  μεταξύ  Node.JS  και  PHP,  είναι  ότι  οι  περισσότερες  διαδικασίες 

σταματούν,  έως  ότου  ολοκληρωθούν  κάποιες  ενέργειες,  σε  αντίθεση  με  τη  Node.JS  όπου  οι 

διαδικασίες  δε  διακόπτονται,  αλλά  εκτελούνται  παράλληλα,  χρησιμοποιώντας  callbacks  για  να 

σηματοδοτήσουν την ολοκλήρωση ή αποτυχία μιας διαδικασίας. 

Όσο  αναφορά  τη  λειτουργία  της  Node.JS  είναι  single-thread  event  loop,  με  κλήσεις 

εισόδου/εξόδου  χωρίς  αποκλεισμούς,  επιτρέποντας  την  υποστήριξη  σε  δεκάδες  χιλιάδες 

ταυτόχρονες  συνδέσεις,  χωρίς  να  επιβαρύνεται  με  κόστος  αλλαγής  thread.  Ο  σχεδιασμός  της 

κοινής  χρήσης  ενός  νήματος  μεταξύ  όλων  των  αιτημάτων  που  χρησιμοποιούν  το  μοτίβο  του 

παρατηρητή (observer), προορίζεται για την κατασκευή πολλών ταυτόχρονων εφαρμογών, όπου 

οποιαδήποτε λειτουργία εκτελεί I / O πρέπει να χρησιμοποιεί callbacks. Η υλοποίηση του single-

thread event loop, πραγματοποιείται, χρησιμοποιώντας τη βιβλιοθήκη libuv, η οποία με τη σειρά 

της  χρησιμοποιεί  μία  ομάδα  νημάτων  σταθερού  μεγέθους,  που  χειρίζεται  ορισμένες  από  τις  μη 

αποκλεισμένες  ασύγχρονες  λειτουργίες  εισόδου/εξόδου.  Για  την  εκτέλεση  παράλληλων 

διεργασιών, υπεύθυνη χρίζεται μία ομάδα νημάτων που θα τις διαχειρίζεται [5]. 

Το thread κύριας λειτουργίας, καλεί τα post request στην ουρά των κοινόχρηστων εργασιών 

και  στη  συνέχεια,  καθορίζει  και  εκτελεί  το  κάθε  thread  στο  thread  pool.  Ενσωματωμένες 

λειτουργίες συστήματος μη αποκλεισμού, όπως η δικτύωση, μεταφράζονται ως  kernel-side non-

blocking  sockets,  ενώ  οι  λειτουργίες  συστήματος  μπλοκαρίσματος,  όπως  τα  αρχεία  I  /  O, 

εκτελούνται με τρόπο αποκλεισμού στα δικά τους νήματα. Όταν ένα νήμα από την ομάδα νήματος 

ολοκληρώνει  μία  εργασία,  ενημερώνεται  το  κύριο  νήμα  αυτού,  το  οποίο  με  τη  σειρά  του 

ενεργοποιείται και εκτελεί το καταχωρημένο callback.  

Στην εικόνα (5) παρουσιάζεται ο τρόπος διαχείρισης των αιτημάτων μετάδοσης δεδομένων. 

 

Εικόνα 5: Διαχείριση αιτημάτων σύνδεσης