Κυριακή 3 Φεβρουαρίου 2013

Αρχικά, έχουμε φτιάξει ένα service το οποίο τρέχει κάθε κόμβο του συστήματος και είναι listener για τα broadcast πακέτα. Το service αυτό χρησιμοποιείται στην αρχή για το network discovery του συστήματος, RideShareServive αντικείμενο.

Το αντικείμενο αυτό ξεκινάει όταν ξεκινάει η εφαρμογή, στην StartScreen του συστήματος. Πιο συγκεκριμένα, ένας κόμβος ξεκινάει σαν server και μόλις δεχτεί ένα μύνημα mapper ή reducer καταχωρεί στην αντίστοιχη λίστα την IP διεύθυνση του κόμβου αυτού.

Παραδοχή: Δημιουργήσαμε ένα simulation περιβάλλον έτσι ώστε οι μέθοδοι Map και Reduce να έχουν πρακτική εφαρμογή. Θεοωρούμε ότι κάθε κόμβος (Mapper ή Reducer ) είναι σύνολο από είναι ένα σύνολο από mappers ή reducers αντίστοιχα.

Με την είσοδο καινούριου κόμβου στο σύστημα ο server στέλνει τη λίστα με αυτά τα taxi. Διακρίνουμε δύο περιπτώσεις:
  • Όταν μπαίνει ένας reducer, παίρνει την IP του και την καταχωρεί στο πεδίο IP του κάθε taxi.
  • Όταν μπαίνει ένας mapper, στέλνει τη λίστα με τα taxi που έχουν συνδεθεί.
Ο κόμβος mapper έχει τη λίστα με όλα τα taxi και όταν ξεκινήσει παίρνει από τη βάση λίστα με 27 mappers. Έπειτα υπολογίζει σύμφωνα με τη λίστα των taxi, τα taxi εκείνα που βρίσκονται σε απόσταση εντός 10km για κάθε mapper.

Παραδοχή: Λόγω συντεταγμένων στην βάση όλα τα taxi έβγαιναν σε κοντινή απόσταση από κάθε πελάτη, έχουμε κάνει ένα filtering στις αποστάσεις αυτές διπλασιάζοντας τες.

Γίνεται αντιστοίχιση κάθε mapper με κάποια taxi. Η κλάσση  mapper έχει ένα πεδίο πίνακα με αυτά τα taxi (TaxiArray). Αυτά τα taxi τα στελνει στον reducer και ο reducer κάνει το mapping από mapper σε taxi. Δηλ. ποιοί mappers έχουν ζητήσει το taxi.

Καλεί τη Reduce μέθοδο και αφού διαλέξει τους καλύτερους mappers στέλνει request για να τους πάρει. Εκείνοι το παίρνουν και γίνεται ένα reverse mapping και μετά οι mappers επιλέγουν ένα taxi. Η επιλογή αυτή είναι random. 

Ο reducer παίρνει τα confirmations από τους mappers και στέλνει τα confirmed και pending roots στον server. Όταν φτάσουν στον server εκείνος φτιάχνει τις αντίστοιχες λίστες, οι οποίες κατηγοριοποιούνται ως προς το ID του taxi. 

Πατώντας το κάθε στοιχείο της λίστας βλέπουμε το taxi και τους πελάτες με τις πορείες τους.  

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου