1. Ανάπτυξη μεθοδολογίας για μετασχηματισμό client-
server αρχιτεκτονικής σε REST
Εφαρμογή στην πλατφόρμα Power TAC.
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών
Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών
Χρήσταινας Γρηγόριος
Α.Ε.Μ: 7382
Επιβλέπων:
Επίκουρος καθηγητής Ανδρέας Λ. Συμεωνίδης
Θεσσαλονίκη
2 Νοεμβρίου 2017
3. Στόχος διπλωματικής εργασίας
Restification της πλατφορμας PowerTAC.
• Προσαρμογή στην υπάρχουσα αρχιτεκτονική και
τρόπο λειτουργίας της πλατφόρμας του διαγωνισμού.
• Επίλυση προβλημάτων επικοινωνίας και
διαμοιρασμού πληροφορίας
3
5. Διαγωνισμός PowerTAC
• Προσομοιώνεται μια αγορά ηλεκτρικής ενέργειας .
• Aνταγωνιζόμενες αυτόνομες οντότητες επονομαζόμενοι ως brokers προσπαθούν να
συνάψουν συμβόλαια με πελάτες και να ικανοποιήσουν τις ενεργειακές τους
απαιτήσεις πραγματοποιώντας συναλλαγές με την αγορά χονδρικής.
• Σκοπός τους είναι να μεγιστοποιήσουν το κερδος και να κατέχουν το υψηλότερο
τραπεζικό υπόλοιπο στο τέλος της προσομοίωσης.
5
6. Στάδια προσομοίωσης
Boostrap περίοδος –
Συλλογή μετρήσεων
πελατών 14 μέρες πριν
την κανονική
πρσομοίωση.
Time slot - Μονάδα
μέτρησης χρόνου
προσομοίωσης – 5 sec
πραγματικού χρόνου.
Διάρκεια
προσομοίωσης ≅ 1440
time slots.
6
7. Αρχιτεκτονική
Common module
• Simulation clock
• Συγχρονισμός server
και broker
Server Interface
• Υλοποίηση οντοτήτων
διαγωνισμού
• Αποστολή και
λήψη μυνημάτων
Σύνδεση core modules με common και server interface modules.
7
8. Επικοινωνία
Server
Sample
Broker
Components
Method calls JMS API
• Java Message Service
• Σειριοποίηση και αποσειριοποίηση
μυνημάτων σε XML μορφή
• Υλοποίηση συναρτήσεων
handleMessage(msg) και
sendMessage(msg) για αποστολή και
λήψη μυνημάτων
8
11. Αποθήκευση πληροφορίας
Κάθε μήνυμα αποθηκεύεται στην βάση κατά την λήψη του στον sample broker.
Για κάθε αντικείμενο έχει δημιουργηθεί το αντίστοιχο entity object.
Η σύνδεση στην βάση με το κατάλληλο sessionfactory δημιουργείται
κατά την αρχικοποίηση του sample broker.
public void handleMessage (BankTransaction btx)
{
long bankid=btx.getId();
int PostedTs=btx.getPostedTimeslotIndex();
double bankAmount=btx.getAmount();
String bankBroker=btx.getBroker().toString();
session = sessionFactory.openSession();
session.beginTransaction();
BankTx log1 = new BankTx(bankid,PostedTs,bankAmount,bankBroker);
session.save(log1);
session.getTransaction().commit();
session.close();
}
1 βάση δεδομένων με πολλά schema’s, ένα για κάθε sample broker.
11
12. Εξαγωγή resources
Broker
Accept
Competition
Specs
Properties
Bootstrap
Data
Sim Start
• Αρχικό στάδιο διαγωνισμού:
• Στάδια μετά την έναρξη του διαγωνισμού:
Timeslot
Update
Weather
Data
Balance
Report
Tariff Spec Transactions
Cash
Distribution
Report
Timeslot
done
• Tariffs, Orders, Balancing Orders, Tariff Revokes αποστέλλονται μετά το τέλος του
time slot.
Async resources
Async resources
12
13. Asynchronous Resources
@Path("/asyncresource")
public class AsynchronousResource {
@GET
public void asyncRestMethod(@Suspended final AsyncResponse
asyncResponse) {
result = fucntion();
asyncResponse.resume(result);
}
function() {
result=…… //time consuming operation
return result;
}
}
Υλοποίηση συνάρτησης που
ελέγχει αν έχει ληφθεί το
αντίστοιχο message στον sample
broker.
Για κάθε broker υπάρχει ένα
αντικείμενο με boolean
μεταβλητές.
Έλεγχος της σχετικής boolean
μεταβλητής σε κάθε async
resource με χρήση μιας while
loop.
13
14. Βοηθητικά Resources
POST αίτημα
Εγγραφή στην
βάση
/{Ok_Resource}
Λήψη και
αποθήκευση
μυνήματος
/{Ok_Resource}
REST broker Sample broker
Async resource response Async resource response
/TsUpdateOk
/SimEndOk
/TsComplOk
/BrokerAccOk
/SimStartOk
/Order/done
/ΤariffSpec/done
/BalancingOrder/done
/TariffRev/done
• Χρησιμοποιούνται για να γνωστοποιήσουν ο sample broker και το web
service ότι έχουν λάβει ένα μύνημα ή έχουν ολοκληρώσει ένα POST αίτημα
αντίστοιχα.
• Αφορά τα Async resources και τα POST αιτήματα για Tariffs, Orders, Tarif-
revs,Balancing Orders.
14
15. Αυθεντικοποίηση
• Σε επίπεδο URI
▫ Basic Auth – Username/Password with Base64 encoding.
▫ Κάθε URI περιέχει σαν παράμετρο το αντίστοιχο schema.
▫ Έλεγχος credentials του request header με αυτά του αντίστοιχου schema.
• Σε επίπεδο βάσης
▫ Web service - δικαιώματα superuser στην βάση.
▫ Κάθε sample broker αντιστοιχεί σε έναν user/login role στην βάση που είναι και owner
στο αντίστοιχο schema.
15
16. Τέλος προσομοίωσης
• Με το τέλος της προσομοίωσης ο
sample broker λαμβάνει ένα sim-end
μύνημα.
• Στην αντίστοιχη handleMessage
συνάρτηση πραγματοποιείται αίτημα
στο βοηθητικό resource.
• Τα async resources TimeslotUpdate και
TimeslotComplete επιστρέφουν κενά
αντικείμενα
• Ο rest broker αντιλαμβάνεται ότι η
προσομοίωση έχει τελειώσει
16
19. Ευχαριστίες
19
Ευχαριστώ τον κ. Ανδρέα Συμεωνίδη για την
εμπιστοσύνη του στην ανάθεση της διπλωματικής
και την καθοδήγησή του κατά την διάρκεια
εκπόνησής της
.....και εσάς για την προσοχή σας!