Está en la página 1de 17

Programación

Reactiva en Java
Reactor & Webflux
2020-10-29
Ricardo José Ramírez Blauvelt
Delivery Manager
CoE Transformación Digital
¿Qué es la
programación
reactiva?

Es un paradigma enfocado en el trabajo


con flujos de datos finitos o infinitos de
manera asíncrona, permitiendo que
estos datos se propaguen generando
cambios en la aplicación, es decir,
“reaccionan” a los datos ejecutando una
serie de eventos
El Manifiesto de Sistemas
Reactivos

Los sistemas construidos como


Sistemas Reactivos son más flexibles,
con bajo acoplamiento y escalables.
Esto hace que sean más fáciles de
desarrollar y abiertos al cambio. Son
significativamente más tolerantes a
fallos y cuando fallan responden con
elegancia y no con un desastre. Los
Sistemas Reactivos son altamente
responsivos, dando a los usuarios un
feedback efectivo e interactivo
https://www.reactivemanifesto.org/es
Receptividad

• Capacidad de reaccionar rápido para cualquier usuario


• Definición de tiempos máximos de respuesta para detección
rápida de problemas
• Consistencia en el sistema
• “El sistema siempre responde a tiempo”
• “Los problemas pueden ser detectados rápidamente y tratados
efectivamente”
Elasticidad • Poco acoplamiento
• Aislamiento de fallos
• Posibilidad de escalar horizontalmente
• Responder a cualquier condición de
carga
• Sin cuellos de botella
• “Hacer más con menos”
• Procesar cargas de trabajo más
altas, con menos hilos
Resiliencia

• Capacidad para seguir operando a pesar de los errores


• Garantizar una buena capacidad de respuesta bajo cualquier
condición
• Los fallos son manejados dentro de cada componente, aislando
cada componente de los demás, y asegurando así que cualquier
parte del sistema pueda fallar y recuperarse sin comprometer el
sistema como un todo
• Intercambio asíncrono de mensajes
• Fronteras entre componentes
• Bajo acoplamiento
Orientación • Aislamiento

a mensajes • Transparencia de ubicación


• Control de “back-pressure”
• No bloqueante
Event
Loop
Reactive
Streams
https://www.reactive-streams.org/
Flujo

• La programación reactiva es un
modelo PUSH, en cambio los
Streams son un modelo PULL
• En la programación reactiva, los
eventos son “empujados” a los
suscriptores en la medida en que
van llegando
• Hot Streams Vs Cold Streams
Backpressure

Es el proceso mediante el cual, un


suscriptor (downstream) le puede
indicar al publicador (upstream) que
envíe menos eventos para que éste
no se sobrecargue
RSocket Spring Reactor

Algunas
librerías

RxJava/ReactiveX Akka
Webflux
Spring Webflux es una
implementación no bloqueante
para flujos reactivos y manejo
“backpressure”
Qué
vamos a
construir
Referencias
• https://projectreactor.io/docs/core/release/reference/
• https://www.baeldung.com/java-reactive-systems
• https://medium.com/@nikeshshetty/5-common-mistakes-of-webflux-novices-
f8eda0cd6291
• https://github.com/reactor/reactor-core
• https://github.com/politrons/reactive
• https://spring.io/projects/spring-data-r2dbc
• https://es.slideshare.net/paradigmatecnologico/programacin-reactiva-con-spring-webflux
• https://www.baeldung.com/spring-webflux-404
Repositorios

• https://github.com/rjrb/DemoReactorJava
• https://github.com/rjrb/DemoWebflux
Gracias

También podría gustarte