Skip to main content
Aggregator Microservices

Intent

Streamline client's interactions with system's microservices by providing a single aggregation point that consolidates data and responses from multiple services. This simplifies the client's communication with the system, improving efficiency and reducing complexity.

Explanation


iluwatarAbout 2 minArchitecturalAPI designCloud distributedDecouplingMicroservices
Ambassador

Intent

Provide a helper service instance on a client and offload common functionality away from a shared resource.

Also known as

  • Sidecar

Explanation

Real world example

A remote service has many clients accessing a function it provides. The service is a legacy application and is impossible to update. Large numbers of requests from users are causing connectivity issues. New rules for request frequency should be implemented along with latency checks and client-side logging.


iluwatarAbout 4 minStructuralDecouplingCloud distributed
API Gateway

Intent

The API Gateway design pattern aims to provide a unified interface to a set of microservices. It acts as a single entry point for clients, routing requests to the appropriate microservices and aggregating results, thereby simplifying the client-side code.

Also known as


iluwatarAbout 3 minArchitecturalAPI designCloud distributedDecouplingMicroservices
Caching

Intent

The caching pattern avoids expensive re-acquisition of resources by not releasing them immediately after use. The resources retain their identity, are kept in some fast-access storage, and are re-used to avoid having to acquire them again.

Also known as

  • Cache
  • Temporary Storage

iluwatarAbout 5 minPerformance optimizationCachingPerformanceCloud distributed
Circuit Breaker

Also known as

  • Fault tolerance switch

Intent

The Circuit Breaker pattern aims to prevent a software system from making calls to a part of the system that is either failing or showing signs of distress. It is a way to gracefully degrade functionality when a dependent service is not responding, rather than failing completely.


iluwatarAbout 6 minResilienceCloud distributedFault toleranceMicroservices
Commander

Also known as

  • Distributed Transaction Commander
  • Transaction Coordinator

Intent

The intent of the Commander pattern in the context of distributed transactions is to manage and coordinate complex transactions across multiple distributed components or services, ensuring consistency and integrity of the overall transaction. It encapsulates transaction commands and coordination logic, facilitating the implementation of distributed transaction protocols like two-phase commit or Saga.


iluwatarAbout 3 minBehavioralCloud distributedMicroservicesTransactions
Leader Election

Intent

Leader Election pattern is commonly used in cloud system design. It can help to ensure that task
instances select the leader instance correctly and do not conflict with each other, cause
contention for shared resources, or inadvertently interfere with the work that other task
instances are performing.


iluwatarAbout 11 minBehavioralCloud distributed
Poison Pill

Intent

Poison Pill is known predefined data item that allows to provide graceful shutdown for separate
distributed consumption process.

Explanation

Real world example

Let's think about a message queue with one producer and one consumer. The producer keeps pushing
new messages in the queue and the consumer keeps reading them. Finally when it's time to
gracefully shut down the producer sends the poison pill message.


iluwatarAbout 2 minBehavioralCloud distributedReactive
Priority Queue Pattern

Intent

Prioritize requests sent to services so that requests with a higher priority are received and
processed more quickly than those of a lower priority. This pattern is useful in applications that
offer different service level guarantees to individual clients.

Explanation


iluwatarAbout 2 minBehavioralDecouplingCloud distributed
Queue based load leveling

Intent

Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth
intermittent heavy loads that may otherwise cause the service to fail or the task to time out.
This pattern can help to minimize the impact of peaks in demand on availability and responsiveness
for both the task and the service.


iluwatarAbout 4 minConcurrencyDecouplingPerformanceCloud distributed