Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. ·...

64
05α Αρχιτεκτονικά πρότυπα λογισμικού Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017‐18 Δρ. Κώστας Σαΐδης ﴾[email protected]﴿

Transcript of Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. ·...

Page 1: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

Τεχνολογία Λογισμικού

Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών YπολογιστώνΕθνικό Μετσόβιο Πολυτεχνείο

Χειμερινό εξάμηνο 2017‐18

Δρ. Κώστας Σαΐδης ﴾[email protected]﴿

Page 2: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

2

Page 3: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

3

Page 4: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

4

Page 5: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Η αρχιτεκτονική πάει μαζί μεΜεθοδολογία ανάπτυξηςΑνάλυση απαιτήσεωνΣχεδιασμόκ.ά ﴾που έχουμε συζητήσει﴿

5

Page 6: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Πολλές οπτικές ﴾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

6

Page 7: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

7

Page 8: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

2ο ΠαραδοτέοΠληρέστερο αν παρουσιάζει όλες τις οπτικές!

8

Page 9: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

9

Page 10: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

10

Page 11: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

An architectural style is a named collection of architectural designdecisions that:

1. are applicable in a given development context,2. constrain architectural design decisions that are specific to a

particular system within that context, and3. elicit beneficial qualities in each resulting system.

11

Page 12: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

12

Page 13: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

13

Page 14: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

Microservices*

14

Page 15: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

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

15

Page 16: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

16

Page 17: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

17

Page 18: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

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

18

Page 19: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

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

19

Page 20: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

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

20

Page 21: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

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

21

Page 22: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

ACID TransactionsAtomicity

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

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

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

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

22

Page 23: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

23

Page 24: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

24

Page 25: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

25

Page 26: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

26

Page 27: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Latency vs Throughput

docs.voltdb.com

27

Page 28: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

if (P) { A or C }

28

Page 29: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

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

29

Page 30: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

30

Page 31: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Κατηγοριοποίηση κατανεμημένωνσυστημάτων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

31

Page 32: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

32

Page 33: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

33

Page 34: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

34

Page 35: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

35

Page 36: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Client‐Server

36

Page 37: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

37

Page 38: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Peer‐to‐peer ﴾P2P﴿

38

Page 39: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

39

Page 40: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Component‐based

40

Page 41: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

41

Page 42: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

42

Page 43: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Layered/N‐tier

43

Page 44: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

44

Page 45: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Model‐View‐Controller ﴾MVC﴿

45

Page 46: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

ModelData model, business logic

ViewData display

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

46

Page 47: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Παράδειγμα@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)  }  }

47

Page 48: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Master‐Slave / Master‐Replica

48

Page 49: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

ReplicationMaster copy of data, multiple replicas ﴾slaves﴿

Load balancingMaster dispatch logic, multiple "worker" nodes

49

Page 50: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Share‐Nothing Architecture

50

Page 51: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

51

Page 52: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

52

Page 53: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Message‐driven/Publish‐subscribe

53

Page 54: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

54

Page 55: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

55

Page 56: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Event‐driven

56

Page 57: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

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

57

Page 58: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Παράδειγμα ﴾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;  }} 58

Page 59: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

59

Page 60: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Παράδειγμα ﴾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);  }}

60

Page 61: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Nodejs Event Loop

61

Page 62: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Pipeline / Pipe‐filter

62

Page 63: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

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

63

Page 64: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων

Παράδειγμα ﴾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

64