CARLA GRAS y VALERIA HERNÁNDEZ - 'Modelo Productivo y Actores Sociales en El Agro Argentino' - 2006
Codemotion 2015 - Akka.NET - EL modelo de actores
-
Upload
javier-garcia-magna -
Category
Technology
-
view
491 -
download
0
Transcript of Codemotion 2015 - Akka.NET - EL modelo de actores
Akka.Net: El modelo de programación con actoresJavier García Magna @ndsrfMADRID · 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 procesadorAsí que ahora los ponemos juntitos y los llamamos ”cores”
1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 20160
500
1000
1500
2000
2500
3000
3500
4000
0
10
20
30
40
50
60
70
1 1 1 1 1 1 1 1 1 2 2 4 48 8
16 16
32 32
64
200 300 400 500
1000
1800
2530
3200
3600
2200
2930 30003200 3330 3330
3150 3200 3150 3150 3150
MHz y Número de Cores por año
Mhz Cores
ServicioPetición
ServicioPetición
ServicioPetición
MultithreadingLos sistemas con multithreading nos permiten aprovechar más de un core al mismo tiempo
MultithreadingLos sistemas con multithreading nos permiten aprovechar más de un core al mismo tiempo
ServicioPetición
if (account1.Balance > amount) { account1.Withdraw(amount) account2.Deposit(amount) }
Thread 1Thread 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 ActoresTres axiomas:Enviar – Un actor puede enviar mensajes a otros actoresCrear – Un actor puede crear otros actoresEstado – 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
ActorRefActorRef
Actor
State
Supervision
Children
Mailbox
Behavior
TransportTell/Ask
Thre
ad P
ool
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 mensaje2.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
12
1
2
3
34
4
Router
Routee1
Routee2
Routee3
Scale up!
.. Or down!
RoundRobinRouter
Router
Routee1
Routee2
Routee3
Routee1
Routee2
Routee3
Routee1
Routee2
Routee3
Scale up!
Scale out!
Remote1
Remote2
Remote3
Router
Router
Router
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
Akka.Persistence
Persist(elEvento, manejador);
SaveSnapShot(miEstado);
Akka.TestKitAkka.DI
Akka.LoggerAkka.Monitoring
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 [email protected]
@ndsrf
Basado en el original de Roger Alsing http://rogeralsing.com
Extra Llamar a actores desde fuera de un sistema de actores