- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Akka的高级主题介绍
展开查看详情
1 .A Tour of (Advanced) Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42
2 .Content ▪ Why Akka? ▪ Sharding ▪ Local actor ▪ Persistence ▪ Remote actor ▪ Akka HTTP ▪ Scheduling ▪ Finite State Machines ▪ Cluster ▪ Conclusion ▪ Routing ▪ Questions ▪ Cluster singleton
3 .Why Akka?
4 .Why Akka? ▪ Concurrent ▪ Scalable ▪ Fault tolerant ▪ More natural programming experience when connecting to other systems ▪ Easy to use?
5 .
6 .Local actor
7 .Local actor Actor on JVM 1
8 . Local actor Coordinator Actor Hello conference
9 .Local actor Coordinator Actor println("Hello conference")
10 .class Worker extends Actor { Scala def receive = { case x => println(x) } } val system = ActorSystem("ExampleActorSystem") val workerActorRef = system.actorOf(Props[Worker]) workerActorRef ! "Hello conference"
11 .Remote actor
12 .Remote actor Actor on Actor on JVM 1 JVM 2
13 .val workerActorRef = system.actorOf(Props[Worker]) workerActorRef ! "Hello conference" val workerActorRef = context.actorSelection("akka.tcp:// ExampleActorSystem@127.0.0.1:9005 /user/workerActor") workerActorRef ! "Hello conference"
14 .akka { actor { provider = "akka.remote.RemoteActorRefProvider" } remote { enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { hostname = "127.0.0.1" port = 9002
15 . Remote actor StartMessage Hello conference Coordinator Worker actor actor
16 . Remote actor WorkerMessage Greetings from the coordinator: Coordinator Hello Conference Worker actor actor
17 . Remote actor WorkerResponse Message Item processed Coordinator successfully Worker actor actor
18 .Scheduling
19 . Scheduling Tick Scheduled once after 1 second system.scheduler.scheduleOnce(1 seconds, scheduleReceiveActor, Tick) Actor Tock Scheduled every 5 seconds system.scheduler.schedule(0 seconds, 5 seconds, scheduleReceiveActor, Tock)
20 .Scheduling ▪ Does not work for fixed point in time like 17:00 – Use Quartz
21 .Cluster
22 .Cluster ActorSystem on JVM 2 ActorSystem ActorSystem on JVM 1 on JVM 3 ActorSystem on JVM 4
23 .Seed nodes ▪ Contact points for automatically joining a cluster
24 .akka { cluster { seed-nodes = [ "akka.tcp://ClusterNode@127.0.0.1:2551", "akka.tcp://ClusterNode@127.0.0.1:2552" ] } }
25 .Cluster Worker Node Port 2551 Association failed with [akka.tcp://ClusterSystem@127.0.0.1:2552
26 .Cluster Worker Node Member Up with IP: 127.0.0.1 and port: 2551 Member Up with IP: 127.0.0.1 and port: 2552 Port 2551 Worker Node Member Up with IP: 127.0.0.1 and port: 2551 Member Up with IP: 127.0.0.1 and port: 2552 Port 2552
27 . Cluster Worker Node Member Up with IP: 127.0.0.1 and port: 2550 Port 2551 Coordinator Worker Node Node Port 2550 Member Up with IP: 127.0.0.1 and port: 2550 Port 2552
28 .Cluster Worker RegisterWorker Node Port 2551 Coordinator Worker Node RegisterWorker Node Port 2550 Port 2552
29 . Cluster Worker Node Port 2551 Coordinator Worker Node Node Port 2550 Port 2552 Worker registered with IP: 127.0.0.1 and port: 2551 Worker registered with IP: 127.0.0.1 and port: 2552