Saltar al contenido principal
Aggregator Microservices

Propósito

El usuario realiza una sola llamada al servicio del agregador y, a continuación, el agregador llama a cada microservicio relevante.

Explicación

Ejemplo del mundo real

Nuestro mercado web necesita información sobre los productos y su inventario actual. Hace una llamada a un agregador
servicio que a su vez llama al microservicio de información del producto y al microservicio de inventario del producto que devuelve la
información combinada.


iluwatarAlrededor de 1 minArchitecturalCloud distributedDecouplingMicroservices
Ambassador

Propósito

Proporcionar una instancia de servicio auxiliar a un cliente y delegar en ella las funcionalidades comunes de un recurso compartido.

Explicación

Ejemplo real

Un servicio remoto tiene muchos clientes accediendo a una función que este servicio proporciona. El servicio es una aplicación heredada y
es imposible actualizarla. Un gran número de solicitudes por parte de los usuarios están causando problemas de conectividad. Nuevas reglas
respecto a la frecuencia de solicitudes deberían implementarse junto con comprobaciones de latencia y registros del lado del cliente.


iluwatarAlrededor de 3 minStructuralDecouplingCloud distributed
API Gateway

Propósito

Agregar llamadas a los microservicios en un mismo lugar, la puerta de enlace API (API Gateway). El usuario
hace una llamada simple a la API Gateway, y la API Gateway hace la llamada a cada microservicio relevante.

Explicación

Con el patrón de microservicios, el cliente puede necesitar datos de múltiples microservicios. Si el
cliente llamara a cada microservicio de forma directe, podría ocasionar tiempos de carga largos, ya que
el cliente tendría que hacer una solicitud de red para cada microservicio llamado. Además, tener
la llamada del cliente a cada microservicio vincula directamente al cliente con ese microservicio - si la
implementacion interna del cambio de microservicios (por ejemplo, si dos microservicios se combinan en
algún momento en el futuro) o si la ubicación (host y puerto) de un microservicio cambia, entonces cada
cliente que hace uso de esos microservicios debe ser actualizado.


iluwatarAlrededor de 3 minArchitecturalCloud distributedDecouplingMicroservices
Commander

También conocido como

  • Distributed Transaction Commander
  • Transaction Coordinator

Propósito

La intención del patrón Commander en el contexto de las transacciones distribuidas es gestionar y coordinar transacciones complejas a través de múltiples componentes o servicios distribuidos, asegurando la consistencia e integridad de la transacción global. Encapsula comandos de transacciones y lógica de coordinación, facilitando la implementación de protocolos de transacciones distribuidas como commit de dos fases o Saga.


iluwatarAlrededor de 3 minBehavioralCloud distributedMicroservicesTransactions
Leader Election

Propósito

El patrón de elección (Leader pattern) del líder se utiliza habitualmente en el diseño de sistemas en la nube. Puede ayudar a garantizar que las instancias de tarea seleccionen la instancia líder correctamente y no entren en conflicto entre sí, causen contención por recursos compartidos o interfieran inadvertidamente con el trabajo que otras instancias de tarea están realizando.


iluwatarAlrededor de 11 minBehavioralCloud distributed
Poison Pill

Propósito

La píldora venenosa es un elemento de datos predefinido conocido que permite proporcionar un cierre graceful para un proceso de consumo distribuido independiente.

Explicación

Ejemplo del mundo real

Pensemos en una cola de mensajes con un productor y un consumidor. El productor sigue introduciendo nuevos mensajes en la cola y el consumidor sigue leyéndolos. Finalmente, cuando llega el momento de cerrar la cola, el productor envía el mensaje de píldora venenosa.


iluwatarAlrededor de 2 minBehavioralCloud distributedReactive
Priority Queue Pattern

Propósito

Priorizar las peticiones enviadas a los servicios de forma que las peticiones con mayor prioridad se reciban y procesen más rápidamente que las de menor prioridad. Este patrón es útil en aplicaciones que ofrecen diferentes garantías de nivel de servicio a clientes individuales.


iluwatarAlrededor de 2 minBehavioralDecouplingCloud distributed
Retry

Propósito

Reintentar de forma transparente determinadas operaciones que implican la comunicación con recursos externos, en particular a través de la red, aislando el código de llamada de los detalles de implementación del reintento.

Explicación

El patrón de reintento consiste en reintentar operaciones sobre recursos remotos a través de la red un número determinado de veces. Depende estrechamente de los requisitos empresariales y técnicos: ¿Cuánto tiempo permitirá la empresa que espere el usuario final hasta que finalice la operación? ¿Cuáles son las características de rendimiento del recurso remoto durante los picos de carga, así como de nuestra aplicación a medida que más hilos esperan la disponibilidad del recurso remoto? Entre los errores devueltos por el servicio remoto, ¿cuáles pueden ignorarse con seguridad para volver a intentarlo? ¿Es la operación idempotent?


iluwatarAlrededor de 3 minBehavioralPerformanceCloud distributed
Sharding

Propósito

El patrón sharding significa dividir el almacén de datos en particiones horizontales o shards. Cada fragmento tiene el mismo esquema, pero contiene su propio subconjunto de datos.
Un fragmento es un almacén de datos en sí mismo (puede contener los datos de muchas entidades de diferentes tipos), que se ejecuta en un servidor que actúa como nodo de almacenamiento.


iluwatarMenos de 1 minutoBehavioralPerformanceCloud distributed
Strangler

Propósito

Migrar de forma incremental un sistema heredado sustituyendo gradualmente piezas específicas de funcionalidad
con nuevas aplicaciones y servicios. A medida que se sustituyen las funciones del sistema heredado, el nuevo
sistema acaba cubriendo todas las funciones del sistema antiguo y puede tener sus propias funciones nuevas, con lo que
estrangulando el sistema antiguo y permitiéndole retirarlo del servicio.


iluwatarMenos de 1 minutoStructuralExtensibilityCloud distributed