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

Σχετικά έγγραφα
Τεχνολογία Λογισμικού

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

07 Αρχιτεκτονική Κατανεμημένων Συστημάτων στον Παγκόσμιο Ιστό

09 Η γλώσσα UML II. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

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

Αρχιτεκτονικές Συστημάτων

10α Έλεγχος και επαλήθευση λογισμικού

02α Διαχείριση Έργων Λογισμικού

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

Τι είναι η λογική αρχιτεκτονική

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

02 Αντικειμενοστρεφής Προγραμματισμός

11β Δομικά πρότυπα σχεδίασης

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

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Μελέτη και Ανάπτυξη ενός Εργαλείου Υποβοήθησης στη Σχεδίαση µίας Βάσης εδοµένων Τύπου Graph από Τελικούς Χρήστες

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Αρχιτεκτονικός σχεδιασμός. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 11

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

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

Έρευνα στα Ασύρματα Δίκτυα Αισθητήρων WSN

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Προχωρηµένα Θέµατα Αρχιτεκτονικής Η/Υ. Storage Systems.. Λιούπης

Ταχύτητα, Απλότητα & Αξιοπιστία

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud

Κατανεμημένα Συστήματα. Javascript LCR example

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Διαφορές single-processor αρχιτεκτονικών και SoCs

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #17

Πύλη Φαρμακευτικών Υπηρεσιών Υπουργείου Υγείας Κύπρου. System Architecture Overview

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δίκτυα Υπολογιστών I

Πληροφορίες για το μάθημα

Προσομοίωση Συστημάτων Χειμερινό εξάμηνο Εξάμηνο 5 ο. Ατομική εργασία προς παράδοση στο CloudAnalyst

Βασικές Έννοιες Web Εφαρμογών

Συνάφεια Κρυφής Μνήµης σε Επεκτάσιµα Μηχανήµατα

11α Κατασκευαστικά πρότυπα σχεδίασης

05 Ανάλυση απαιτήσεων

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

12 Έλεχος και επαλήθευση λογισμικού

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Τεχνολογίες και Εφαρμογές Διαδικτύου

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

EPL 660: Lab 4 Introduction to Hadoop

ΘΕΜΑΤΑ ΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2006 / 2007

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή

Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture)

Λειτουργικά Συστήματα. Εισαγωγή

EM 361: Παράλληλοι Υπολογισμοί

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Δυνατότητα επέκτασης για υποστήριξη ξεχωριστής διεπαφής χρήστη για φορητές συσκευές

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Δίκτυα Διασύνδεσης. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων

Week 10: Graphical User Interfaces

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

METROPOLIS. Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

Διαχείριση Πληροφοριακών Συστημάτων

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

14 Πρότυπα Σχεδίασης συνέχεια

Ειδικά Θέματα Προγραμματισμού

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Μάθημα «Υπηρεσίες Ηλεκτρονικής Υγείας»

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Αρχιτεκτονική Υπολογιστών

Κεφάλαιο 1ο Πολυπρογραμματισμός Πολυδιεργασία Κατηγορίες Λειτουργικών Συστημάτων

Αβραμίδης Ελευθέριος Επιβλέπων καθηγητής Κωνσταντίνος Διαμαντάρας. ΤΕΙ Θεσσαλονίκης 17/2/2009

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

05β Η ιδεατή μηχανή της Java

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

Μάθημα 6: Αρχιτεκτονική TCP/IP

Λογισµικό (Software SW) Γλώσσες

Chapter 4 ( ή 1 στο βιβλίο σας)

Μεθοδολογίες Παραγωγής Λογισµικού

ΜΗΧΑΝΙΣΜΟΣ ΔΙΑΓΝΩΣΗΣ ΤΩΝ ΑΝΑΓΚΩΝ ΤΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΣΕ ΕΠΑΓΓΕΛΜΑΤΑ ΚΑΙ ΔΕΞΙΟΤΗΤΕΣ: Η ΠΕΡΙΠΤΩΣΗ ΤΩΝ ΤΠΕ

Επιχειρησιακά Πληροφοριακά Συστήματα. Site: Στόχος Σκοπός μαθήματος

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ

Αντικειμενοστρεφής Προγραμματισμός

ΔΙΚΤΥΑ (15-17) Π. Φουληράς

Δίκτυα Υπολογιστών I

ΕΙΣΑΓΩΓΗ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

Τεχνολογία Ψυχαγωγικού Λογισμικού και Εικονικοί Κόσμοι Ενότητα 8η - Εικονικοί Κόσμοι και Πολιτιστικό Περιεχόμενο

Δομή και Στόχοι του Μαθήματος - Εισαγωγή

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΙΑ ΙΚΑΣΙΑ ΜΕΤΑΒΑΣΗΣ ΣΤΟ CLOUD COMPUTING ΜΑΘΗΣΙΑΚΟΙ ΣΤΟΧΟΙ

Transcript:

05α Αρχιτεκτονικά πρότυπα λογισμικού Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr

Περιεχόμενα Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων συστημάτων Αρχιτεκτονικά στυλ και πρότυπα architectural styles & patterns 2

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

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

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

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

Ειδικότερα Logical view: έμφαση στη λειτουργικότητα του συστήματος σε υψηλό επίπεδο Physical view: έμφαση στην τοπολογία και διασύνδεση των συστατικών του σε φυσικό επίπεδο deployment Development view: έμφαση στην οπτική του προγραμματιστή Process view: έμφαση στη δυναμική συμπεριφορά του συστήματος κατά την εκτέλεσή του απόδοση, κλιμάκωση, κτλ. Scenarios Use case view: έμφαση στη χρηστική πλευρά του συστήματος και στους σχετικούς ελέγχους αποδοχής 7

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

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

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

An architectural style is a named collection of architectural design decisions that: 1. are applicable in a given development context, 2. constrain architectural design decisions that are specific to a particular system within that context, and 3. elicit beneficial qualities in each resulting system. 11

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

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

Στο μάθημα θα δούμε αλφαβητικά Client Server Component based Εvent Driven Layered / N tier Master slave/master replica Message driven/publish subscribe Microservices* 14

Model View Controller MVC Model View ViewModel MVVM * Peer to peer P2P Pipeline / Pipe filter Representation State Transfer REST * Service oriented* Share nothing * Σε επόμενη διάλεξη 15

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

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

Πλάνες σχετικά με τα κατανεμημένα συστήματα α 1. Το δίκτυο είναι αξιόπιστο reliable. 2. Η καθυστέρηση latency του δικτύου είναι μηδενική. 3. Το εύρος ζώνης bandwidth είναι άπειρο. 4. Το δίκτυο είναι ασφαλές secure. 18

Πλάνες σχετικά με τα κατανεμημένα συστήματα β 5. Η τοπολογία topology του δικτύου δεν αλλάζει. 6. Υπάρχει μόνο ένας διαχειριστής administrator. 7. Το κόστος μεταφοράς transport δεδομένων είναι μηδενικό. 8. Το δίκτυο είναι ομογενές homogeneous. 19

Βασικά χαρακτηριστικά Συνέπεια δεδομένων Consistency Διαθεσιμότητα συστήματος Availability Αστοχία δικτύου Network partition Καθυστέρηση αίτησης/απόκρισης Latency Αιτήσεις ανά μονάδα χρόνου Throughput Κλιμάκωση Scalability 20

Consistency C Η συνέπεια των δεδομένων. Ζητούμενο: κάθε ανάγνωση read λαμβάνει την πιο πρόσφατη ενημέρωση write ή το σχετικό σφάλμα. Η συνέπεια που υπόσχεται η αρχή ACID των δοσοληψιών στις βάσεις δεδομένων είναι πιο αυστηρή. 21

ACID Transactions Atomicity Η δοσοληψία πετυχαίνει ή αποτυγχάνει πλήρως Consistency Μετάβαση της βάσης σε πάντα έκγυρη κατάσταση Isolation Απομόνωση της εκτέλεσης των δοσοληψιών Durability Μονιμότητα των αποτελεσμάτων των δοσοληψιών 22

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

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

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

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

Latency vs Throughput docs.voltdb.com 27

Τo θεώρημα CAP Σε περίπτωση αστοχίας δικτύου P, θα έχουμε είτε συνέπεια των δεδομένων C είτε διαθεσιμότητα της εφαρμογής A, όχι και τα δύο. if (P) { A or C } 28

Το θεώρημα PACELC Επέκταση του CAP Αν δεν υπάρχει P, θα έχουμε είτε συνέπεια των δεδομένων C είτε την ελάχιστη δυνατή καθυστέρηση L, αλλά όχι και τα δύο. if (P) { A or C } else { L or C } 29

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

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

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

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

Οριζόντια και κάθετη κλιμάκωση Οριζόντια scale out/in : αύξηση/μείωση των κόμβων. Κάθετη scale up/down : αύξηση/μείωση των πόρων ενός κόμβου. 34

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

Client Server 36

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

Peer to peer P2P 38

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

Component based 40

Χαρακτηριστικά Σχεδιασμός και αλληλεπίδραση των συστατικών του λογισμικού μέσω Interfaces Ένα component παρέχει/υλοποιεί ένα interface και απαιτεί την ύπαρξη/κάνει χρήση ενός άλλου Χαλαρή σύνδεση loose coupling και διαχωρισμός ενδιαφερόντων separation of concerns Application server: το λογισμικό που φιλοξενεί τα components 41

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

Layered/N tier 43

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

Model View Controller MVC 45

Χαρακτηριστικά Διαχωρισμός ενδιαφερόντων Controller User input, request/response handling, επίβλεψη των Model, View Model Data model, business logic View Data display Ευρεία χρήση στις εφαρμογές διαδικτύου, πολλά frameworks 46

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

Master Slave / Master Replica 48

Χαρακτηριστικά N slaves, 1 master Master authority, slaves redundancy Εφαρμογές: υψηλή διαθεσιμότητα, βελτίωση απόδοσης, επιμερισμός φόρτου, κ.ά Replication Master copy of data, multiple replicas slaves Load balancing Master dispatch logic, multiple "worker" nodes 49

Share Nothing Architecture 50

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

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

Message driven/publish subscribe 53

Χαρακτηριστικά Χαλαρή σύνδεση loose coupling μεταξύ συστατικών/ εφαρμογών Publisher producer : αποστολή μηνυμάτων Subscriber consumer : λήψη μηνυμάτων Topics channels : "κλάσεις/θέματα" μηνυμάτων Message Bus broker : διαχερίση/δρομολόγηση μηνυμάτων σύγχρονα ή ασύγχρονα, με εγγυήσεις αποστολής ή όχι, με χρήση ουρών, με φιλτράρισμα ή όχι κτλ. 54

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

Event driven 56

Χαρακτηριστικά Events & Event handlers listeners, callbacks Implicit invocation / Inversion of control Event thread / Event loop Εφαρμογές: γραφική διεπαφή χρήστη, server side αρχιτεκτονική 57

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

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

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

Nodejs Event Loop 61

Pipeline / Pipe filter 62

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

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