middleware – patrones de diseño - ugrelvex.ugr.es/decsai/information-systems/slides/53...
TRANSCRIPT
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
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
Middleware – Patrones de diseño
4
Middleware – Patrones de diseño
5
Flexibility & Extensibility
Reusability
…
Modularity
Predictability
Latency
Patterns
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
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
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
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
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
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
Reactor
Simplificación del manejo de eventos
18
Reactor
Simplificación del manejo de eventos
19
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
Half-Sync/Half-Async
Mejora de la escalabilidad
22
Half-Sync/Half-Async
Mejora de la escalabilidad
23
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
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
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
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
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
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