middleware – patrones de diseño - ugrelvex.ugr.es/decsai/information-systems/slides/53...

18
Middleware – Patrones de diseño © Fernando Berzal, [email protected] Middleware – Patrones de diseño Patrones de diseño Frameworks Diseño de brokers Reactor Half-Sync/Half-Async Leader/Followers Acceptor-Connector 1

Upload: trinhminh

Post on 29-Sep-2018

248 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Patrones de diseño© Fernando Berzal, [email protected]

Middleware – Patrones de diseño

� Patrones de diseño

� Frameworks

� Diseño de brokers

� Reactor

� Half-Sync/Half-Async

� Leader/Followers

� Acceptor-Connector

1

Page 2: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Patrones de diseño

2

Middleware – Patrones de diseño

3

To slay the dragons of accidental & inherent complexity associated

with concurrent & networked software we need to codify proven software experience

Page 3: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Patrones de diseño

4

Middleware – Patrones de diseño

5

Flexibility & Extensibility

Reusability

Modularity

Predictability

Latency

Patterns

Page 4: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Patrones de diseño

6

Middleware – Patrones de diseño

7

Mapping Design

Problems to Proven

Solutions

Codifying Design

Expertise

Identifying & Name

Recurring Structures &

Behaviors

Enabling Systematic

Reuse

Conveying Architectural Knowledge

Pattern Concepts

Page 5: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Patrones de diseño

Descripción de patrones de diseño

� Name & statement of pattern intent

� Problem addressed by pattern

� Including “forces” & “applicability”

� Solution

� Visual & textual descriptions of pattern structure & dynamics

� Examples & Implementation guidance

� Source code snippets

� Consequences

� Pros & cons of applying the pattern

� Known uses (“Rule of three”)

� Related patterns (tradeoffs between alternative patterns) 8

Middleware – Patrones de diseño

9

Pattern Knowledge

Trade-off Analysis

Design & Implementation

Decisions

Implement & Integrate Patterns &

Code

Page 6: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Frameworks

10

Frameworks are integrated sets of

software components that collaborate to provide reusable

architectures for families of related applications

Application-specific functionality

Database

Electronic Trading

Social Media

Networking GUI

MobileApps

Application domains

Infrastructure domains

Middleware – Frameworks

Beneficio clave

Reutilización sistemática

� Diseño

� Código

11

Problem Pattern

Encapsulating low-level system functions to enhance portability

Wrapper Façade

Demuxing broker core events efficiently

Reactor

Managing broker connections efficiently

Acceptor-Connector

Enhancing broker scalabilityby processing requests concurrently

Half-Sync/ Half-Async

Efficiently synchronize the Half-Sync/Async request queue

Monitor Object

… …

Defining the broker’s base-line architecture

Broker

Patterns & frameworks help avoid “reinventing the wheel” for many accidental & inherent

complexities of concurrent &

networked software

Page 7: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Frameworks

Técnicas de reutilización

� Bibliotecas de clases

� Frameworks

12

ADTs

Locks

Strings

Files

Invocations

Reactor

Database

NETWORKING

Application-SpecificFunctionality

Callbacks

GUI

Networking

Middleware – Frameworks

Técnicas de reutilización

Componentes & SOA [Service-Oriented Architecture]

13

Middleware Bus

Naming

LockingLogging

Events

Page 8: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Frameworks

Black-box frameworks

Parametrización y ensamblado de objetos:

� Extensibilidad por composición.

� Patrones de diseño: Strategy & Decorator. 14

Middleware – Frameworks

White-box frameworks

Creación de subclases y redefinición de métodos:

� Extensibilidad por herencia.

� Patrones de diseño: Template Method & State. 15

Page 9: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Middleware – Pattern Languages

POSA

16

Middleware – Pattern Languages

Diseño de un broker

17

LayersWrapper

Facade

Component

Configurator

Reactor

Monitor

Object

StrategyAbstract

Factory

Broker

Leader/

Followers

Acceptor-

Connector

Acceptor-

Connector

Half-Sync/

Half-Async

Page 10: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Reactor

Simplificación del manejo de eventos

18

Reactor

Simplificación del manejo de eventos

19

Page 11: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Reactor

Simplificación del manejo de eventos

20

ORB Core

Object Adapter

Object

(Servant)

<<ready to read>>

Root POA

Socket Event Sources

IIOP Handlers & Acceptors

Reactor

Reactor

21

LayersWrapper

Facade

Component

Configurator

Reactor

Monitor

Object

StrategyAbstract

Factory

Broker

Leader/

Followers

Acceptor-

Connector

Acceptor-

Connector

Half-Sync/

Half-Async

Simplicity

Page 12: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Half-Sync/Half-Async

Mejora de la escalabilidad

22

Half-Sync/Half-Async

Mejora de la escalabilidad

23

Page 13: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Half-Sync/Half-Async

Mejora de la escalabilidad: Múltiples solicitudes en paralelo

24

ORB Core

Object Adapter

Object

(Servant)

<<ready to read>>

POA Thread Pool

Socket Event Sources

IIOP Handlers & Acceptors

Reactor

Lane

3

Lane

2

Lane

1

Half-Sync/Half-Async

25

LayersWrapper

Facade

Component

Configurator

Reactor

Monitor

Object

StrategyAbstract

Factory

Broker

Leader/

Followers

Acceptor-

Connector

Acceptor-

Connector

Half-Sync/

Half-Async

Scalability & flexibility

Page 14: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Leader/Followers

Reducción de jitter & overhead

26

Handle

demultiplexes

*Handle Set

handle_events()deactivate_handle()reactivate_handle()select()

Concrete Event Handler B

handle_event ()get_handle()

Thread Pool

join()

promote_new_leader()

synchronizer

*Event Handler

handle_event ()

get_handle()

Concrete Event Handler A

handle_event ()get_handle()

Leader/Followers

Reducción de jitter & overhead

27

Page 15: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Leader/Followers

Reducción de jitter & overhead

28

<<ready to read>>

POA Thread Pool

Socket Event Sources

IIOP Handlers & Acceptors

Thread Pool Reactor

Lane

3

Lane

2

Lane

1

ORB Core

Object Adapter

Object

(Servant)

Leader/Followers

29

LayersWrapper

Facade

Component

Configurator

Reactor

Monitor

Object

StrategyAbstract

Factory

Broker

Leader/

Followers

Acceptor-

Connector

Acceptor-

Connector

Half-Sync/

Half-Async

Predictability & Flexibility

Page 16: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Decisiones de diseño

30

<<ready to read>>

POA Thread Pool

Socket Event Sources

IIOP Handlers & Acceptors

Thread Pool Reactor

Lane

3

Lane

2

Lane

1

<<ready to read>>

POA Thread Pool

Socket Event Sources

IIOP Handlers & Acceptors

Reactor

Lane

3

Lane

2

Lane

1

Leader/Followers Half-Sync/Half-Async

Features Poor Good

Scalability Poor Good

Efficiency Good Poor

Optimizations Good Poor

Priority inversion Good Poor

Acceptor-Connector

Separación conexión/inicialización vs. procesamiento

31

Page 17: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Acceptor-Connector

Separación conexión/inicialización vs. procesamiento

32

Acceptor-Connector

Separación conexión/inicialización vs. Procesamiento

e.g. JAWS web server33

Page 18: Middleware – Patrones de diseño - UGRelvex.ugr.es/decsai/information-systems/slides/53 Middleware... · Middleware – Patrones de diseño 9 Pattern Knowledge Trade-off Analysis

Bibliografía

Pattern-Oriented Software Architecture

a.k.a. POSA� Volume 1: A System of Patterns

� Volume 2: Patterns for Concurrent and Networked Objects

� Volume 3: Patterns for Resource Management

� Volume 4: A Pattern Language for Distributed Object Computing

� Volume 5: On Patterns and Pattern Languages

34

Curso recomendado

Pattern-Oriented Software Architectures for Concurrent and Networked SoftwareDouglas C. Schmidt (Vanderbilt University)https://www.coursera.org/course/posasoftware

35