Τεχνολογία Λογισμικού - ntua · 2020-05-05 · Σχολή...

63
Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο Πολυτεχνείο Τεχνολογία Λογισμικού 7ο / 9ο Εξάμηνο 2018‐19 Ν.Παπασπύρου, Αν.Καθ. ΣΗΜΜΥ, [email protected],gr Β.Βεσκούκης, Αν.Καθ. ΣΑΤΜ, [email protected],gr Κ.Σαΐδης, ΠΔ 407, [email protected]

Upload: others

Post on 15-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ

Εθνικό Μετσόβιο Πολυτεχνείο

Τεχνολογία Λογισμικού7ο / 9ο Εξάμηνο 2018‐19

Ν.Παπασπύρου, Αν.Καθ. ΣΗΜΜΥ, [email protected],grΒ.Βεσκούκης, Αν.Καθ. ΣΑΤΜ, [email protected],gr

Κ.Σαΐδης, ΠΔ 407, [email protected]

Page 2: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΠεριεχόμεναΑρχιτεκτονική λογισμικούΠοιοτικά χαρακτηριστικά κατανεμημένων συστημάτων

Αρχιτεκτονικά στυλ και πρότυπα ﴾architectural styles &patterns﴿

2

Page 3: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Αρχιτεκτονική λογισμικού

3

Page 4: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Περί τίνος πρόκειταιΗ λήψη των θεμελιωδών δομικών και σχεδιαστικών αποφάσεωνγια το λογισμικό που είναι ακριβό ﴾βλ. πρακτικά δύσκολο έωςαδύνατο﴿ να αλλάξουν αφού υλοποιηθούν.

4

Page 5: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Πολλές αρχιτεκτονικές οπτικές ﴾4+1﴿

By mpan ‐ Based on File:4+1 Architectural View Model.jpg by User:Mdd,CC BY‐SA 3.0, https://commons.wikimedia.org/w/index.php?curid=50144028

5

Page 6: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΕιδικότεραLogical view: έμφαση στη λειτουργικότητα του συστήματοςσε υψηλό επίπεδοPhysical view: έμφαση στην τοπολογία και διασύνδεση τωνσυστατικών του σε φυσικό επίπεδο ﴾deployment﴿Development view: έμφαση στην οπτική του προγραμματιστή

Process view: έμφαση στη δυναμική συμπεριφορά τουσυστήματος κατά την εκτέλεσή του ﴾απόδοση, κλιμάκωση,κτλ.﴿Scenarios ‐ Use case view: έμφαση στη χρηστική πλευρά τουσυστήματος και στους σχετικούς ελέγχους αποδοχής

6

Page 7: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Αρχιτεκτονικά πρότυπα ﴾architecturalpatterns﴿Γενικές κι επαναχρησιμοποιήσιμες λύσεις σε κοινά προβλήματααρχιτεκτονικής.

7

Page 8: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Αρχιτεκτονικά στυλ ﴾architectural styles﴿Όπως και στην "κανονική" αρχιτεκτονική, το στυλ είναι μιασυγκεκριμένη μέθοδος κατασκευής που χαρακτηρίζεται απόσυγκεκριμένα αξιοπρόσεκτα χαρακτηριστικά.

8

Page 9: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Ένα αρχιτεκτονικό στυλ είναι μια "επώνυμη" συλλογή απόσχεδιαστικές αποφάσεις:

1. η οποία εφαρμόζεται σε ένα δεδομένο περιβάλλον,

2. οριοθετόντας τα πιθανά συστήματα που μπορεί ναπροκύψουν σε αυτό,

3. παρέχοντας ποιοτικά χαρακτηστικά σε κάθε συστήμα πουπροκύπτει.

9

Page 10: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Λίστα αναγνωσμάτωνRichard N. Taylor, Nenad Medvidovic, Eric Dashofy, "SoftwareArchitecture: Foundations, Theory, and Practice", 2009, Wiley andSons, ISBN: 0470167742

10

Page 11: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Αρχιτεκτονικά στυλ και πρότυπαΣτο μάθημα δεν θα επιμείνουμε στη διάκριση.Είτε τα ονομάσουμε στυλ, είτε πρότυπα, μας εφοδιάζουν μεμια κοινή γλώσσα ή λεξιλόγιο για να περιγράψουμεοικογένεις ή/και κατηγορίες συστήματων.

Είναι σύνηθες να συνυπάρχουν και να συνδυάζονται πολλάαρχιτεκτονικά πρότυπα και στυλ σε μια εφαρμογή.

11

Page 12: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Στο μάθημα θα δούμε ﴾αλφαβητικά﴿Client‐ServerComponent‐based

Εvent‐DrivenLayered / N‐tierMaster‐slave/Master‐replicaMessage‐driven/Publish‐subscribe

Microservices*

12

Page 13: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Model‐View‐Controller ﴾MVC﴿Model‐View‐ViewModel ﴾MVVM﴿*Peer‐to‐peer ﴾P2P﴿

Pipeline / Pipe‐filterRepresentation State Transfer ﴾REST﴿*Service‐oriented*Share‐nothing

* Σε επόμενη διάλεξη

13

Page 14: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Ποιοτικά χαρακτηριστικάκατανεμημένων συστημάτων

14

Page 15: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΟρισμόςΈνα κατανεμημένο σύστημα αποτελείται από ξεχωριστάσυστατικά που:

Λειτουργούν σε ένα δίκτυο υπολογιστών.Επικοινωνούν μεταξύ τους μέσω ανταλλαγής μηνυμάτων.Αλληλοεπιδρούν για την επίτευξη ενός κοινού στόχου.

15

Page 16: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾α﴿

1. Το δίκτυο είναι αξιόπιστο ﴾reliable﴿.2. Η καθυστέρηση ﴾latency﴿ του δικτύου είναι μηδενική.

3. Το εύρος ζώνης ﴾bandwidth﴿ είναι άπειρο.4. Το δίκτυο είναι ασφαλές ﴾secure﴿.

16

Page 17: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾β﴿

5. Η τοπολογία ﴾topology﴿ του δικτύου δεν αλλάζει.6. Υπάρχει μόνο ένας διαχειριστής ﴾administrator﴿.

7. Το κόστος μεταφοράς ﴾transport﴿ δεδομένων είναι μηδενικό.8. Το δίκτυο είναι ομογενές ﴾homogeneous﴿.

17

Page 18: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Βασικά χαρακτηριστικάΣυνέπεια δεδομένων ﴾Consistency﴿

Διαθεσιμότητα συστήματος ﴾Availability﴿Αστοχία δικτύου ﴾Network partition﴿Καθυστέρηση αίτησης/απόκρισης ﴾Latency﴿Αιτήσεις ανά μονάδα χρόνου ﴾Throughput﴿

Κλιμάκωση ﴾Scalability﴿

18

Page 19: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Consistency ﴾C﴿Η συνέπεια των δεδομένων.

Ζητούμενο: κάθε ανάγνωση ﴾read﴿ λαμβάνει την πιοπρόσφατη ενημέρωση ﴾write﴿ ή το σχετικό σφάλμα.

19

Page 20: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΠροσοχήΗ συνέπεια που υπόσχεται η αρχή ACID των δοσοληψιών στιςβάσεις δεδομένων είναι πιο αυστηρή.

20

Page 21: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ACID TransactionsAtomicity

Η δοσοληψία πετυχαίνει ή αποτυγχάνει πλήρωςConsistency

Μετάβαση της βάσης σε πάντα έκγυρη κατάστασηIsolation

Απομόνωση της εκτέλεσης των δοσοληψιώνDurability

Μονιμότητα των αποτελεσμάτων των δοσοληψιών

21

Page 22: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Availability ﴾A﴿Η διαθεσιμότητα της εφαρμογής.Ζητούμενο: κάθε αίτηση ﴾request﴿ να λαμβάνει μια απάντηση﴾μη λάθους﴿.Χωρίς να προσφέρονται πάντα εγγυήσεις ότι η απάντησηπεριέχει την πιο πρόσφατη ενημέρωση ﴾write﴿.Η υψηλή διαθεσιμότητα απαιτεί αντιγραφές ﴾replication﴿.

22

Page 23: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Network Partition ﴾P﴿Aστοχία δικτύου.Επιμερισμός του συστήματος σε "αποσυδεδεμένες" νησίδες.Παράδειγμα: απώλεια σύνδεσης με τη βάση δεδομένων.

23

Page 24: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Latency ﴾L﴿H καθυστέρηση στην απόκριση του συστήματος.

Ζητούμενο: να ελαχιστοποιηθεί ο χρόνος που απαιτείται γιατην ικανοποίηση μιας αίτησης.

24

Page 25: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ThroughputΤο πλήθος των αιτήσεων που ικανοποιούνται από τοσύστημα ανά χρονική στιγμή.Ζητούμενο: να μεγιστοποιηθεί το πλήθος των αιτήσεων πουμπορούν να ικανοποιηθούν ανά χρονική στιγμή.

25

Page 26: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Latency vs Throughput

docs.voltdb.com

26

Page 27: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Τo θεώρημα CAPΣε περίπτωση αστοχίας δικτύου ﴾P﴿, θα έχουμε είτε συνέπεια τωνδεδομένων ﴾C﴿ είτε διαθεσιμότητα της εφαρμογής ﴾A﴿, όχι και ταδύο.

if (P) { A or C }

27

Page 28: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Το θεώρημα PACELCΕπέκταση του CAP

Αν δεν υπάρχει P, θα έχουμε είτε συνέπεια των δεδομένων ﴾C﴿ είτετην ελάχιστη δυνατή καθυστέρηση ﴾L﴿, αλλά όχι και τα δύο.

if (P) { A or C }else   { L or C }

28

Page 29: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Λίστα αναγνωσμάτωνDaniel Abadi, "Consistency Tradeoffs in Modern DistributedDatabase System Design", IEEE Computer, Volume 45, Issue 2, Feb.2012.

29

Page 30: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Κατηγοριοποίηση κατανεμημένωνσυστημάτωνPA/EL

if P then A else L

PC/EC

if P then C else C //ACID databases

PC/EL

if P then C else L

30

Page 31: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ScalabilityΗ δυνατότητα ενός συστήματος να επαυξηθεί για να διαχειριστείαυξημένο φόρτο.

31

Page 32: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΕιδικότεραΑν η αύξηση της απόδοσης του συστήματος είναι αναλογική τηςαύξησης σε υπολογιστικούς πόρους ﴾προσθήκη υλικού﴿, τότε τοσύστημα κλιμακώνεται ﴾scales﴿.

32

Page 33: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Οριζόντια και κάθετη κλιμάκωσηΟριζόντια ﴾scale out/in﴿: αύξηση/μείωση των κόμβων.

Κάθετη ﴾scale up/down﴿: αύξηση/μείωση των πόρων ενόςκόμβου.

33

Page 34: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Αρχιτεκτονικά στυλ και πρότυπα

34

Page 35: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Client‐Server

35

Page 36: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάServer‐basedΝ clients, 1 serverΠου επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: WWW, IMAP, POP3, FTP, SSH, κ.ά

36

Page 37: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Peer‐to‐peer ﴾P2P﴿

37

Page 38: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάΔίκτυο ομότιμων κόμβωνΚάθε κόμβος είναι και client και server

Οι κόμβοι επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: File‐sharing networks, Blockchain,Cryptocurrencies, κ.ά

38

Page 39: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Component‐based

39

Page 40: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάΣχεδιασμός και αλληλεπίδραση των συστατικών τουλογισμικού μέσω InterfacesΈνα component παρέχει/υλοποιεί ένα interface και απαιτείτην ύπαρξη/κάνει χρήση ενός άλλου

Χαλαρή σύνδεση ﴾loose coupling﴿ και διαχωρισμόςενδιαφερόντων ﴾separation of concerns﴿Application server: το λογισμικό που φιλοξενεί τα components

40

Page 41: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΚανόναςΠάντα ξεκινάμε το σχεδιασμό του λογισμικού από τα Interfaces

41

Page 42: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Layered/N‐tier

42

Page 43: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάServer‐basedΛογική ή/και φυσική αρχιτεκτονική

Ευρεία χρήση στις εφαρμογές διαδικτύουFrameworks: παρέχουν έτοιμα προς χρήση καιπαραμετροποίηση interfaces, components & layers

43

Page 44: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Model‐View‐Controller ﴾MVC﴿

44

Page 45: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάΔιαχωρισμός ενδιαφερόντων

ControllerUser input, request/response handling, επίβλεψη τωνModel, View

ModelData model, business logic

ViewData display

Ευρεία χρήση στις εφαρμογές διαδικτύου, πολλά frameworks

45

Page 46: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Παράδειγμα@Controller(url='/items')class ItemController {    void get(Request req, Response res) {    Template t = loadTemplate('items') //view    List<Item> items = store.loadItems() //model    Context ctx = new Context()    ctx.put("items", items)    t.render(res.getWriter(), ctx)  }  }

46

Page 47: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Master‐Slave / Master‐Replica

47

Page 48: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάN slaves, 1 masterMaster ﴾authority﴿, slaves ﴾redundancy﴿Εφαρμογές: υψηλή διαθεσιμότητα, βελτίωση απόδοσης,επιμερισμός φόρτου, κ.ά

ReplicationMaster copy of data, multiple replicas ﴾slaves﴿

Load balancingMaster dispatch logic, multiple "worker" nodes

48

Page 49: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Share‐Nothing Architecture

49

Page 50: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάΚάθε κόμβος είναι ανεξάρτητος και αυτοτελής.

No single point of contention ﴾δεν διαμοιράζονται πόροι, π.χ.μνήμη ή δίσκος﴿.Sharding: οριζόντια επιμέρηση των δεδομένων.Οριζόντια κλιμάκωση ﴾horizontal scalability﴿ ‐ απλή προσθήκηκόμβων.Η αρχιτεκτονική πολλών NoSQL συστημάτων.

50

Page 51: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Eventual ConsistencyBASE Systems ﴾Basically Available, Soft state, Eventualconsistency﴿Όταν πάψουν οι ενημερώσεις σε μια εγγραφή, τελικά﴾eventually﴿ όλες οι αναγνώσεις της εγγραφής αυτής θαεπιστρέψουν την πιο πρόσφατη ενημέρωση.Replica convergence ﴾σύκλιση αντιγράφων﴿PA/EL ﴾Επιλέγουν αυξημένη διαθεσιμότητα & μείωσηκαθυστέρησης αντί για συνέπεια﴿

51

Page 52: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Message‐driven/Publish‐subscribe

52

Page 53: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάΧαλαρή σύνδεση ﴾loose coupling﴿ μεταξύ συστατικών/εφαρμογώνPublisher ﴾producer﴿: αποστολή μηνυμάτωνSubscriber ﴾consumer﴿: λήψη μηνυμάτων

Topics ﴾channels﴿: "κλάσεις/θέματα" μηνυμάτωνMessage Bus ﴾broker﴿: διαχερίση/δρομολόγηση μηνυμάτωνσύγχρονα ή ασύγχρονα, με εγγυήσεις αποστολής ή όχι, μεχρήση ουρών, με φιλτράρισμα ή όχι κτλ.

53

Page 54: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΕφαρμογέςMiddleware ολοκλήρωσης ετερογενών συστημάτωνΕπίτευξη υψηλής απόδοσης και κλιμάκωσης σεκατανεμημένα συστήματα

Μειονέκτημα: δύσκολη η αλλαγή της δομής των μηνυμάτων

54

Page 55: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Event‐driven

55

Page 56: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάEvents & Event handlers ﴾listeners, callbacks﴿Implicit invocation / Inversion of control

Event thread / Event loopΕφαρμογές: γραφική διεπαφή χρήστη, server‐sideαρχιτεκτονική

56

Page 57: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Παράδειγμα ﴾Javascript﴿class EventEmitter {  constructor() {    this.events = new Map(); //Map<Event, Set<Listener>>  }  on(event, listener) {        let listeners = this.events.get(event);    if (!listeners) {      listeners = new Set();      this.events.set(event, listeners);     }    listeners.add(listener);    return this;  }  emit(event, ...args) {    const listeners = this.events.get(event);    if (listeners) {      for (let listener of listeners) {        listener.apply(event, args);      }    }    return this;  }} 57

Page 58: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

const events = new EventEmitter();events.on('foo', (e) => { console.log(e); });events.emit('foo'); // Prints "foo"

58

Page 59: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Παράδειγμα ﴾Java﴿public class MyPanel extends JPanel {  public MyPanel() {        JButton btn = new JButton("Do it");    btn.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent ae) {        //do it      }    });    add(btn);  }}

59

Page 60: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Nodejs Event Loop

60

Page 61: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Pipeline / Pipe‐filter

61

Page 62: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

ΧαρακτηριστικάData streams, pipes and filters ﴾data transformations﴿Συναρτησιακός προγραμματισμόςΕπαναχρησιμοποίηση, παραλληλισμός

62

Page 63: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο

Παράδειγμα ﴾Java 8 streams﴿List<String> l = Arrays.asList("a1","a2","b1","c2","c1");l.stream() .filter(s ‐> s.startsWith("c")) .map(String::toUpperCase) .sorted() .forEach(System.out::println); 

Output

C1C2

63