SlideShare una empresa de Scribd logo
1 de 30
Akka Streams
Ubaldo Taladriz
utaladriz@exe.cl
@utaladriz
El modelo de actores
• Modelo matemático de computación concurrente
• Su primitiva es el Actor
• Unidad fundamental de computación o cómputo
• Basado en comunicaciones asíncronas
• “La motivación era la posibilidad de realizar
procesamiento paralelo masivo en docenas, cientos o
miles de microprocesadores, cada uno con su memoria
local y procesador de comunicaciones, capaces de
comunicarse a través de una red de alta
velocidad”
El modelo de actores
• Su filosofía, todo es un actor.
• Un actor
– Procesa
– Almacena
– Comunica
• Un actor actúa frente al estímulo de un mensaje. Axiomas:
– Crear nuevos actores
– Enviar mensajes a actores conocidos
– Cambiar su comportamiento para el siguiente mensaje
• Desacoplar el mensajero del receptor, fue el avance fundamental
del modelo
– Todo comunicación es asíncrona
– El receptor es identificado a través de una dirección
El modelo de actor
• Un actor es una abstracción de concurrencia
– Threads
– Locks
– Un mensaje a la vez
• Una solución para el desafío de la programación multicore
• Comunicación asíncrona a través de mensajes
• Como la comunicación es asíncrona, poseen un mailbox para recibir
mensajes
• Pattern Matching de mensajes
• Un actor mantiene su estado de manera interna
– Estado cambiable (Mutable state) es privado
– Estado compartido no puede ser cambiado (immutable shared state)
– Puede cambiar su estado a través de mensajes
Manifiesto Reactivo
Akka es un framekork y un ambiente de ejecución, para desarrollar
aplicaciones con alta concurrencia, distribuidas, resilientes y
basadas en mensajes, en la JVM
Mi primer Actor (Showtime)
Reactive Streams
Participantes
• Ingenieros de
– Netflix
– Pivotal
– Red Hat
– Typesafe
• Otros como Doug Lea y Todd Montgomery
11
Receta para el éxito
• Interfaces minimalistas (Cantidad y simplicidad)
• Especificación rigurosa de la Semántica
• Full TCK (Technology Compatibility Kit) para verificar
las implementaciones
• Completa libertada para implementar las API’s en
distintos lenguajes.
12
Oferta y Demanda
• Los items de datos fluyen río abajo
• La demanda fluye contra la corriente
• Los items de datos solo fluyen cuando existe
Demanda
– Es el recepor quien controla la tasa de emisión de datos
– La cantidad de datos en transmisión está limitada por la demanda enviada.
13
Publisher Subscriber
data
demanda
Push–Pull dinámico
• “push” cuando el consumidor es más rápido
• “pull” cuando el productor es más rápido
• Puede haber comportamiento push/pull
• Se aglutina demanda y eso permite algutinar datos
14
Publisher Subscriber
data
demand
Back-Pressure se contagia
• C es lento
– B debe bajar su velocidad de producción
• A debe bajar su velocidad de producción
15
CA B
Back-Pressure se propaga
• TCP por ejemplo lo tiene incorporado
16
CA B
networkhosts
Reactive Streams
• Flujo de datos asíncrono, no bloqueante.
• Flujo de demanda asíncrono y no bloqueante. ¡
• Mínima coordinación y contención coordination and
contention
• El paso de mensajes permite la distribución
• A través de
aplicaciones, nodos, CPUs, threads, actors
17
Akka Streams
Diseño de la API
• Objetivos:
– Composición al extremo
– Modelo que coloca límites al procesamiento
• Consecuencias:
– Streams Inmutables y reusables
– Paso de materialización explícito (No hay magia)
19
http://doc.akka.io/docs/akka-stream-and-http-experimental/1.0/stream-design.html
Materialización
• Akka Streams separa el qué del cómo
–Utilizando un DSL se declaran Source/Flow/Sink DSL para crear
un blueprint o esquema
–ActorMaterializer los transforma en Actores al ejecutar
• Esto permite varias estrategias alternativas para la
materialización
–Optimización
–Verificación/ Validación
–Deployment en Cluster
• Solo actores Akka por ahora!
20
Streams en Akka
Streams en Akka
22
Streams en Akka
23
Streams en Akka
24
Streams en Akka
25
Streams en Akka
26
Streams en Akka
27
Streams en Akka
28
Show time
• Ejemplos en
– https://github.com/utaladriz/akka-stream-sample
Gracias
Ubaldo Taladriz
utaladriz@exe.cl
@utaladriz

Más contenido relacionado

Destacado

Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016Konrad Malawski
 
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]Johan Janssen
 
How Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM EcosystemHow Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM EcosystemKonrad Malawski
 
End to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to SocketEnd to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to SocketKonrad Malawski
 
Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!Konrad Malawski
 
Reactive Streams 1.0.0 and Why You Should Care (webinar)
Reactive Streams 1.0.0 and Why You Should Care (webinar)Reactive Streams 1.0.0 and Why You Should Care (webinar)
Reactive Streams 1.0.0 and Why You Should Care (webinar)Legacy Typesafe (now Lightbend)
 
CQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaCQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaBharadwaj N
 
Reactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsReactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsKonrad Malawski
 
Akka Streams and HTTP
Akka Streams and HTTPAkka Streams and HTTP
Akka Streams and HTTPRoland Kuhn
 
Akka Cluster and Auto-scaling
Akka Cluster and Auto-scalingAkka Cluster and Auto-scaling
Akka Cluster and Auto-scalingIkuo Matsumura
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesUnderstanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesLightbend
 
A dive into akka streams: from the basics to a real-world scenario
A dive into akka streams: from the basics to a real-world scenarioA dive into akka streams: from the basics to a real-world scenario
A dive into akka streams: from the basics to a real-world scenarioGioia Ballin
 
Akka Finite State Machine
Akka Finite State MachineAkka Finite State Machine
Akka Finite State MachineKnoldus Inc.
 
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, SparkBuilding Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, SparkTodd Fritz
 
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaExploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaLightbend
 
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...Lightbend
 
Recuerdos delfuturo
Recuerdos delfuturoRecuerdos delfuturo
Recuerdos delfuturoCharles Dent
 

Destacado (20)

Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016Akka Streams in Action @ ScalaDays Berlin 2016
Akka Streams in Action @ ScalaDays Berlin 2016
 
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
JavaOne: A tour of (advanced) akka features in 60 minutes [con1706]
 
Akka stream
Akka streamAkka stream
Akka stream
 
How Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM EcosystemHow Reactive Streams & Akka Streams change the JVM Ecosystem
How Reactive Streams & Akka Streams change the JVM Ecosystem
 
Akka streams
Akka streamsAkka streams
Akka streams
 
End to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to SocketEnd to End Akka Streams / Reactive Streams - from Business to Socket
End to End Akka Streams / Reactive Streams - from Business to Socket
 
Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!Reactive Streams, j.u.concurrent & Beyond!
Reactive Streams, j.u.concurrent & Beyond!
 
Reactive Streams 1.0.0 and Why You Should Care (webinar)
Reactive Streams 1.0.0 and Why You Should Care (webinar)Reactive Streams 1.0.0 and Why You Should Care (webinar)
Reactive Streams 1.0.0 and Why You Should Care (webinar)
 
CQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaCQRS + ES with Scala and Akka
CQRS + ES with Scala and Akka
 
Reactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka StreamsReactive Stream Processing with Akka Streams
Reactive Stream Processing with Akka Streams
 
Akka Streams and HTTP
Akka Streams and HTTPAkka Streams and HTTP
Akka Streams and HTTP
 
Akka Cluster and Auto-scaling
Akka Cluster and Auto-scalingAkka Cluster and Auto-scaling
Akka Cluster and Auto-scaling
 
Vert.x vs akka
Vert.x vs akkaVert.x vs akka
Vert.x vs akka
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesUnderstanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
 
A dive into akka streams: from the basics to a real-world scenario
A dive into akka streams: from the basics to a real-world scenarioA dive into akka streams: from the basics to a real-world scenario
A dive into akka streams: from the basics to a real-world scenario
 
Akka Finite State Machine
Akka Finite State MachineAkka Finite State Machine
Akka Finite State Machine
 
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, SparkBuilding Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
Building Reactive Fast Data & the Data Lake with Akka, Kafka, Spark
 
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaExploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
 
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...
 
Recuerdos delfuturo
Recuerdos delfuturoRecuerdos delfuturo
Recuerdos delfuturo
 

Similar a Introducción a Akka Streams y Reactive Streams

Bajandose de la nube y volviendose a subir
Bajandose de la nube y volviendose a subirBajandose de la nube y volviendose a subir
Bajandose de la nube y volviendose a subirPedro Colmenares
 
Apuntes de clase de manejo de CISCO.pptx
Apuntes de clase de manejo de CISCO.pptxApuntes de clase de manejo de CISCO.pptx
Apuntes de clase de manejo de CISCO.pptxFranklinRiver
 
Streaming data, datos que entran por los que van saliendo
Streaming data, datos que entran por los que van saliendoStreaming data, datos que entran por los que van saliendo
Streaming data, datos que entran por los que van saliendoJose Antonio Arroba Gonzalez
 
Pdf redes de_computadoras_e_internet
Pdf redes de_computadoras_e_internetPdf redes de_computadoras_e_internet
Pdf redes de_computadoras_e_internetLuis Chavez A
 
Redes digitales-de-información
Redes digitales-de-informaciónRedes digitales-de-información
Redes digitales-de-informaciónSofi Palmieri
 
Arquitectura de redes Modelo OSI Expansión
Arquitectura de redes Modelo OSI ExpansiónArquitectura de redes Modelo OSI Expansión
Arquitectura de redes Modelo OSI ExpansiónJavierialv
 
Arquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansionArquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansionJavierialv
 
Arquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansionArquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansionJavierialv
 
Arquitectura de redes modelo osi expansión
Arquitectura de redes modelo osi expansiónArquitectura de redes modelo osi expansión
Arquitectura de redes modelo osi expansiónJavierialv
 
Introduccion a las telecomunicaciones
Introduccion a las telecomunicacionesIntroduccion a las telecomunicaciones
Introduccion a las telecomunicacioneshgm2007
 
Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA Andres Moratti
 
introduccion a intenergradomaster2017/cursosocialmedia
introduccion a intenergradomaster2017/cursosocialmediaintroduccion a intenergradomaster2017/cursosocialmedia
introduccion a intenergradomaster2017/cursosocialmediaEulices Requena
 
Sistema cliente servidor
Sistema cliente servidorSistema cliente servidor
Sistema cliente servidorItachi354
 
Fase 1 Redes Locales Basico
Fase 1 Redes Locales BasicoFase 1 Redes Locales Basico
Fase 1 Redes Locales BasicoYanethZamora
 

Similar a Introducción a Akka Streams y Reactive Streams (20)

Primerawan
PrimerawanPrimerawan
Primerawan
 
Sistemas distribuidosz
Sistemas distribuidoszSistemas distribuidosz
Sistemas distribuidosz
 
Bajandose de la nube y volviendose a subir
Bajandose de la nube y volviendose a subirBajandose de la nube y volviendose a subir
Bajandose de la nube y volviendose a subir
 
Apuntes de clase de manejo de CISCO.pptx
Apuntes de clase de manejo de CISCO.pptxApuntes de clase de manejo de CISCO.pptx
Apuntes de clase de manejo de CISCO.pptx
 
Streaming data, datos que entran por los que van saliendo
Streaming data, datos que entran por los que van saliendoStreaming data, datos que entran por los que van saliendo
Streaming data, datos que entran por los que van saliendo
 
Pdf redes de_computadoras_e_internet
Pdf redes de_computadoras_e_internetPdf redes de_computadoras_e_internet
Pdf redes de_computadoras_e_internet
 
Repaso
RepasoRepaso
Repaso
 
Redes digitales-de-información
Redes digitales-de-informaciónRedes digitales-de-información
Redes digitales-de-información
 
Arquitectura de redes Modelo OSI Expansión
Arquitectura de redes Modelo OSI ExpansiónArquitectura de redes Modelo OSI Expansión
Arquitectura de redes Modelo OSI Expansión
 
Arquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansionArquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansion
 
Arquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansionArquitectura de redes modelo osi expansion
Arquitectura de redes modelo osi expansion
 
Arquitectura de redes modelo osi expansión
Arquitectura de redes modelo osi expansiónArquitectura de redes modelo osi expansión
Arquitectura de redes modelo osi expansión
 
Arquitectura Lambda
Arquitectura LambdaArquitectura Lambda
Arquitectura Lambda
 
Introduccion a las telecomunicaciones
Introduccion a las telecomunicacionesIntroduccion a las telecomunicaciones
Introduccion a las telecomunicaciones
 
Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA
 
introduccion a intenergradomaster2017/cursosocialmedia
introduccion a intenergradomaster2017/cursosocialmediaintroduccion a intenergradomaster2017/cursosocialmedia
introduccion a intenergradomaster2017/cursosocialmedia
 
Sistema cliente servidor
Sistema cliente servidorSistema cliente servidor
Sistema cliente servidor
 
Fase 1 Redes Locales Basico
Fase 1 Redes Locales BasicoFase 1 Redes Locales Basico
Fase 1 Redes Locales Basico
 
Introducción a SignalR
Introducción a SignalRIntroducción a SignalR
Introducción a SignalR
 
Sd contecsi
Sd contecsiSd contecsi
Sd contecsi
 

Introducción a Akka Streams y Reactive Streams

  • 2.
  • 3.
  • 4. El modelo de actores • Modelo matemático de computación concurrente • Su primitiva es el Actor • Unidad fundamental de computación o cómputo • Basado en comunicaciones asíncronas • “La motivación era la posibilidad de realizar procesamiento paralelo masivo en docenas, cientos o miles de microprocesadores, cada uno con su memoria local y procesador de comunicaciones, capaces de comunicarse a través de una red de alta velocidad”
  • 5. El modelo de actores • Su filosofía, todo es un actor. • Un actor – Procesa – Almacena – Comunica • Un actor actúa frente al estímulo de un mensaje. Axiomas: – Crear nuevos actores – Enviar mensajes a actores conocidos – Cambiar su comportamiento para el siguiente mensaje • Desacoplar el mensajero del receptor, fue el avance fundamental del modelo – Todo comunicación es asíncrona – El receptor es identificado a través de una dirección
  • 6. El modelo de actor • Un actor es una abstracción de concurrencia – Threads – Locks – Un mensaje a la vez • Una solución para el desafío de la programación multicore • Comunicación asíncrona a través de mensajes • Como la comunicación es asíncrona, poseen un mailbox para recibir mensajes • Pattern Matching de mensajes • Un actor mantiene su estado de manera interna – Estado cambiable (Mutable state) es privado – Estado compartido no puede ser cambiado (immutable shared state) – Puede cambiar su estado a través de mensajes
  • 8. Akka es un framekork y un ambiente de ejecución, para desarrollar aplicaciones con alta concurrencia, distribuidas, resilientes y basadas en mensajes, en la JVM
  • 9. Mi primer Actor (Showtime)
  • 11. Participantes • Ingenieros de – Netflix – Pivotal – Red Hat – Typesafe • Otros como Doug Lea y Todd Montgomery 11
  • 12. Receta para el éxito • Interfaces minimalistas (Cantidad y simplicidad) • Especificación rigurosa de la Semántica • Full TCK (Technology Compatibility Kit) para verificar las implementaciones • Completa libertada para implementar las API’s en distintos lenguajes. 12
  • 13. Oferta y Demanda • Los items de datos fluyen río abajo • La demanda fluye contra la corriente • Los items de datos solo fluyen cuando existe Demanda – Es el recepor quien controla la tasa de emisión de datos – La cantidad de datos en transmisión está limitada por la demanda enviada. 13 Publisher Subscriber data demanda
  • 14. Push–Pull dinámico • “push” cuando el consumidor es más rápido • “pull” cuando el productor es más rápido • Puede haber comportamiento push/pull • Se aglutina demanda y eso permite algutinar datos 14 Publisher Subscriber data demand
  • 15. Back-Pressure se contagia • C es lento – B debe bajar su velocidad de producción • A debe bajar su velocidad de producción 15 CA B
  • 16. Back-Pressure se propaga • TCP por ejemplo lo tiene incorporado 16 CA B networkhosts
  • 17. Reactive Streams • Flujo de datos asíncrono, no bloqueante. • Flujo de demanda asíncrono y no bloqueante. ¡ • Mínima coordinación y contención coordination and contention • El paso de mensajes permite la distribución • A través de aplicaciones, nodos, CPUs, threads, actors 17
  • 19. Diseño de la API • Objetivos: – Composición al extremo – Modelo que coloca límites al procesamiento • Consecuencias: – Streams Inmutables y reusables – Paso de materialización explícito (No hay magia) 19 http://doc.akka.io/docs/akka-stream-and-http-experimental/1.0/stream-design.html
  • 20. Materialización • Akka Streams separa el qué del cómo –Utilizando un DSL se declaran Source/Flow/Sink DSL para crear un blueprint o esquema –ActorMaterializer los transforma en Actores al ejecutar • Esto permite varias estrategias alternativas para la materialización –Optimización –Verificación/ Validación –Deployment en Cluster • Solo actores Akka por ahora! 20
  • 29. Show time • Ejemplos en – https://github.com/utaladriz/akka-stream-sample

Notas del editor

  1. Sean Penn el actor
  2. Carl Hewitt, Lenguaje Planner, pero hoy más que nunca reconocido por el modelo de actores
  3. the crucial addition is to make the exchange bidirectional, and explicitly so message-passing between publisher and subscriber allows asynchronous non-blocking back pressure