Ιούνιος+2004+(RPC)

Θέμα 1ο (15 βαθμοί) Επιθυμείτε να υλοποιήσετε ένα μηχανισμό απομακρυσμένης κλήσης διαδικασίας (RPC):


 * 1) Δώστε λόγους για τους οποίους θα προτιμούσατε μία υλοποίηση πάνω από UDP/IP αντί για TCP/IP. Δώστε αντίστοιχα διαγράμματα ανταλλαγής πακέτων/μηνυμάτων σε επίπεδο φυσικού δικτύου.
 * 2) Πως θα μπορούσε παρ' όλ' αυτά να χρησιμοποιηθεί το TCP/IP;
 * 3) Εξηγήστε τη λειτουργία των σχημάτων εξυπηρέτησης "ξεχωριστό νήμα ανά κλήση διαδικασίας" (worker per request) και "ξεχωρτιστό νήμα ανά βιβλιοθήκη/υπηρεσία/αντικείμενο" (worker per object), και δώστε τα πλεονεκτήματα και τα μειονεκτήματά τους.

__Λύση:__ > > Πλεονεκτήματα: Εϊναι απλό στην υλοποίηση. > Μειονεκτήματα: Δεν κλιμακώνει για μεγάλο πλήθος ταυτόχρονων αιτήσεων.
 * 1) Χρησιμοποιούμε UDP/IP γιατί:
 * 2) Είναι καταλληλότερο για μικρό μέγεθος μηνυμάτων, όπως οι κλήσεις RPC.
 * 3) Επιτυγχάνει καλή απόδοση από άποψη κόστους επικοινωνίας.
 * 4) Υποστηρίζει πολυεκπομπή (broadcast / multicast)
 * 5) Δεν απαιτείται πλήρης αξιοπιστία
 * 6) Το πρόβλημά μας είναι το έξτρα κόστος επικοινωνίας για το άνοιγμα και κλείσιμο της σύνδεσης μεταξύ των εμπλεκόμενων μερών. Θα μπορούσε να χρησιμοποιηθεί μία σύνδεση για περισσότερες από μία κλήσεις RPC. Η σύνδεση αυτή θα μπορούσε να παραμένει ενεργή όσο υπάρχουν RPC calls.
 * __Worker per request__: Για κάθε αίτηση χρησιμοποιείται κι ένα νέο νήμα στο οποίο ανατίθεται η επεξεργασία της.
 * __Worker per request__: Για κάθε αίτηση χρησιμοποιείται κι ένα νέο νήμα στο οποίο ανατίθεται η επεξεργασία της.

> Πλεονεκτήματα: Γλιτώνει χρόνο δημιουγίας και αρχικοποίησης του νήματος και δέχεται απευθείας τις καινούριες κλήσεις. Απλό στην υλοποίηση. > Μειονεκτήματα: Αν δεν υπάρχουν αιτήσεις για συγκεκριμένο object, το νήμα καταναλώνει πόρους άσκοπα. Δεν κλιμακώνει για μεγάλο πλήθος παρεχόμενων λειτουργιών.
 * __Worker per object__: Για κάθε RPC (ή αντικείμενο) δημιουργείται ένα νήμα που επεξεργάζεται τις σχετικές αιτήσεις.

include component="comments" page="Ιούλιος 2004 (RPC)" limit="10"