bt-maps
Child-Parent Process Flow (Actor model)
I am new to elixir and have gone through much of the initial learning materials (books and courses). As a first project, I would like to recreate this service fabric (actor model-type framework) sample application. Specifically, I am looking for advice on best practices to implement the Child-Parent Process Flow and aggregation using the elixir concurrency model. I have a way forward with the API and dashboard parts of the application using phoenix.
Thanks in advance
Brent
Most Liked
ruslandoga
It seems like the sample uses something similar to Orleans. There is an erlang implementation of this general idea of a virtual actor as well, called erleans. The building block of both is a so-called grain (more info on Introduction | Microsoft Orleans Documentation), which is (in my understanding) just a process whose state can be persisted to DB, stopped, and restarted at a later point in time.
It seems that what the sample app wants is to have some sort of a reverse hierarchy of these grains that wake up on incoming transactions, execute them, and “pass it up” to a parent process (possibly starting it) and go back to sleep with some updated state.
It’d be harder to do in plain elixir unless it’s ok to have all processes running all the time, even when there are no transactions to process.







