AKKA.NET es un modelo de actores para la plataforma .NET, un port del ya existente para la JVM.
Size: 7.29 MB
Language: es
Added: Nov 28, 2015
Slides: 45 pages
Slide Content
Akka.Net : El modelo de programación con actores Javier García Magna @ndsrf MADRID · NOV 27-28 · 2015
Sistemas clásicos EF DAO BLL Servicio Entidad Component/ Object
Server
CPU
Ley de Moore Hemos llegado al límite de MHz para un procesador Así que ahora los ponemos juntitos y los llamamos ”cores”
Servicio Petición
Servicio Petición
Servicio Petición Multithreading Los sistemas con multithreading nos permiten aprovechar más de un core al mismo tiempo
Multithreading Los sistemas con multithreading nos permiten aprovechar más de un core al mismo tiempo Servicio Petición
if (account1.Balance > amount) { account1.Withdraw(amount) account2.Deposit(amount) } Thread 1 Thread 2 Condiciones de ”carrera”
Scale out ”cuando una CPU sola no es suficiente”
Sistemas reactivos
akka.net
akka.net Scale up : Akka.Actor Scale out : Akka.Remote Elasticity : Akka.Cluster
Scale-up y scale-out debería ser lo mismo Queremos ejecutar código en algún sitio : un core, una máquina, un cluster... Con una sola tecnología debería de bastar, ¿no?
Scale-up y scale-out debería ser lo mismo Queremos ejecutar código en algún sitio : un core, una máquina, un cluster... Con una sola tecnología debería de bastar, ¿no?
Internet of Things
http://idorun.org
Modelo de Actores Tres axiomas: Enviar – Un actor puede enviar mensajes a otros actores Crear – Un actor puede crear otros actores Estado – Los actores tienen estado y pueden responder a mensajes de forma distinta según su estado ”An island of sanity in a sea of concurrency ” ” Shared nothing ”, ”Black box ” ” Location transparent”, ” Distributable by design” Akka.Net & Azure Service Fabric & Reactive Ext
Event-driven thread ActorRef ActorRef Actor State Supervisio n Children Mailbox Behavior Transport Tell /Ask
Thread Pool Modelo de actores Actor1 Actor1 Actor2 Actor2 Actor3 Actor4 Actor4 Actor1 Más baratos que los threads, con mucho menos context switching Sólo usan CPU cuando procesan un mensaje 2.5 millones de actores por GB de memoria Actor3 Actor4 Actor2 Actor1 Actor3 Actor2 Time
Akka.Actor
Pattern matching & Estado
Manejo de errores en Java, C# o C
Servicio (actors) Petición Error (fallo general no controlado) Supervisor (actor) Manejo de errores Respuesta Error (Validaciones) Cliente Supervisión
Akka.Routing
Un router delega los mensajes a otros actores que harán el trabajo Hay varias estrategias que puedes usar: BroadcastRouter RoundRobinRouter ConsistentHashRouter ScatterGatherFirstCompletedRouter SmallestMailboxRouter TailChoppingRouter RandomRouter Routers
RoundRobinRouter 1 2 1 2 3 3 4 4 Router Routee1 Routee2 Routee3 Scale up ! .. Or down!
Demo: Análisis de emociones en hashtags de Twitter Más hilos con actores...
Akka.Cluster
Extensión de Akka.Remote para crear un clúster elástico, tolerante a fallos, descentralizado, peer to peer. Seed nodes Cluster events Roles Clustered routers Pool / Group Añade routees cuando hay nuevos nodos en el cluster Cluster
Conclusiones Una herramienta más que puedes usar Multi hilo con estado Si no hay estado entonces usa futuros ( Task < TResult >) Location transparency – muy útil Clustering da flexibilidad
Muchas gracias por la atención Javier García Magna [email protected] @ndsrf Basado en el original de Roger Alsing http://rogeralsing.com
Extra Llamar a actores desde fuera de un sistema de actores