This project aims to create a clone of akka. This project is for learning purpose,
As developer, we don't only want to know how to use it, we also want to understand the implementation, the design behind it.
Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM.
We'd like to understand what make it highly concurrent, distributed, resilient.
so let's create our own version of akka - everest
###Tasks
Actor is a lightweight concept for concurrency.
-
Actor System
a system which has thread pool behind, responsible to execute actors
-
Actor
Actor is just a bunch of code which only respond to messages in its mailbox. Actor can not be initialized other than ActorSystem representing a actor(locally or remotely), can be used to send message to the underlying actor
-
ActorCell
a Actor's stub within ActorSystem(can it be replaced with Actor?)
- a actor should be created via ActorSystem
- a actor should be able to receive message
- a actor should be able to process message
-
Mailbox
-
Actor Selection & ActorRef
-
Actor
-
SupervisorStrategy
-
Actor Deployment
local actor
- creation
- actor path
- top level :
akka://<actor-system-name>/<actor-name>
- created by parent actor:
akka://<actor-system-name>/<parent-actor-name>/<actor-name>
- lookup
- run synchronously
- run asynchronously(driven by a thread pool)
- be aware of sender
- an inbox can function as a implicit sender
- respond to `ask`
- supervisation