Skip to main content
CQRS

Intent

Command Query Responsibility Segregation (CQRS) aims to segregate the operations that modify the state of an application (commands) from the operations that read the state (queries). This separation allows for more flexible and optimized designs, especially in complex systems.


iluwatarAbout 2 minArchitecturalEvent-drivenPerformanceScalability
Data Bus

Also known as

  • Event Bus
  • Message Bus

Intent

The Data Bus design pattern aims to provide a centralized communication channel through which various components of a system can exchange data without being directly connected, thus promoting loose coupling and enhancing scalability and maintainability.


iluwatarAbout 3 minBehavioralDecouplingEvent-drivenMessagingPublish/subscribe
Event Aggregator

Also known as

  • Message Hub

Intent

The Event Aggregator design pattern aims to reduce the direct dependencies between multiple systems and components that need to interact by introducing a single component, the Event Aggregator, that receives events from multiple sources and distributes them to multiple listeners.


iluwatarAbout 3 minMessagingDecouplingEvent-drivenReactive
Event-Based Asynchronous

Also known as

  • Asynchronous Event Handling

Intent

The Event-Based Asynchronous pattern allows a system to handle tasks that might take some time to complete without blocking the execution of the program. It enables better resource utilization by freeing up a thread that would otherwise be blocked waiting for the task to complete.


iluwatarAbout 3 minConcurrencyAsynchronousDecouplingEvent-drivenFault toleranceMessagingReactiveScalability
Event-Driven Architecture

Also known as

  • Event-Driven System
  • Event-Based Architecture

Intent

Event-Driven Architecture (EDA) is designed to orchestrate behavior around the production, detection, consumption of, and reaction to events. This architecture enables highly decoupled, scalable, and dynamic interconnections between event producers and consumers.


iluwatarAbout 3 minArchitecturalAsynchronousDecouplingEnterprise patternsEvent-drivenMessagingPublish/subscribeReactiveScalability
Event Queue

Also known as

  • Event Stream
  • Message Queue

Intent

The Event Queue pattern is designed to manage tasks in an asynchronous manner, allowing applications to handle operations without blocking user interactions or other processes.

Event Queue Visualised

iluwatarAbout 3 minConcurrencyAsynchronousDecouplingMessagingEvent-drivenScalability
Event Sourcing

Also known as

  • Event Logging
  • Event Streaming

Intent

Event Sourcing is a design pattern that advocates for the storage of state changes as a sequence of events. Instead of updating a record in a database, all changes are stored as individual events which, when replayed, can recreate the state of an application at any point in time.


iluwatarAbout 3 minArchitecturalDecouplingEvent-drivenFault toleranceMessagingPersistenceScalabilityTransactions
Flux

Intent

The Flux design pattern is intended to manage the flow of data in applications, particularly client-side web applications, by enforcing a unidirectional data flow. It aims to simplify the management of complex data interactions and promote a more predictable state behavior across components.


iluwatarAbout 3 minArchitecturalClient-serverDecouplingEvent-drivenPublish/subscribeReactive
Game Loop

Also known as

  • Game Cycle
  • Main Game Loop

Intent

The Game Loop design pattern aims to facilitate the continuous execution of a game, where each loop cycle processes input, updates game state, and renders the game state to the screen, maintaining a smooth and interactive gaming experience.


iluwatarAbout 3 minBehavioralConcurrencyEvent-drivenGame programmingPerformance