Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La realidad de la arquitectura basada en eventos y basada en mensajes determina la necesidad de aceptar solicitudes idénticas al tiempo que conserva la integridad de los datos y la estabilidad del sistema.
Para ilustrarlo, considere un botón de llamada de ascensor. Mientras presionas el botón, se enciende y se envía un ascensor a tu piso. Unos instantes después, alguien más se une a ti en el vestíbulo. Esta persona sonríe en ti y presiona el botón iluminado una segunda vez. Usted le devuelve la sonrisa y se ríe para sí mismo al recordar que el comando para llamar al ascensor es idempotente.
Presionar un botón de llamada de ascensor una segunda, tercera o cuarta vez no tiene ningún efecto en el resultado final. Al presionar el botón, independientemente del número de veces, el ascensor se envía al piso. Los sistemas idempotentes, como el ascensor, dan como resultado el mismo resultado independientemente de cuántas veces se emita comandos idénticos.
Cuando se trata de compilar aplicaciones, tenga en cuenta los siguientes escenarios:
- ¿Qué ocurre si la aplicación de control de inventario intenta eliminar el mismo producto más de una vez?
- ¿Cómo se comporta la aplicación de recursos humanos si hay más de una solicitud para crear un registro de empleado para la misma persona?
- ¿Dónde va el dinero si su aplicación bancaria recibe 100 solicitudes para realizar el mismo retiro?
Hay muchos contextos en los que las solicitudes a una función pueden recibir comandos idénticos. Algunas situaciones incluyen:
- Políticas de reintento envían la misma solicitud varias veces.
- Los comandos almacenados en caché se reproducen en la aplicación.
- Errores de aplicación que envían varias solicitudes idénticas.
Para proteger la integridad de los datos y el estado del sistema, una aplicación idempotente contiene lógica que puede contener los comportamientos siguientes:
- Comprobación de la existencia de datos antes de intentar ejecutar una eliminación.
- Comprobar si los datos ya existen antes de intentar ejecutar una acción de creación.
- Lógica de conciliación que crea una coherencia final en los datos.
- Controles de simultaneidad.
- Detección de duplicación.
- Validación de actualización de datos.
- Proteja la lógica para comprobar los datos de entrada.
En última instancia, la idempoencia se logra asegurándose de que una acción determinada es posible y solo se ejecuta una vez.