Algorithm behind Phoenix pub/sub & presence

Is there a whitepaper somewhere explaining the algorithms / design of Phoenix.Pubsub and Phoenix.Presence ?

In particular, I am not asking about how to use Phoenix.PubSub / Phoenix.Presence.

I am asking about how they are implemented / design tradeoffs made in their design. In particular, the distributed elixir case, of nodes running on different machines in the same VPC.

The following links might help:


Thanks, I also came across Simple, Distributed and Scalable PubSub in Erlang | Carlos Andres Bolaños . Is Phoenix.PubSub relatively ‘straight forward’? For some reason, I thought there would be some crazy complexity behind it, but it almost seems like it is implementing a straight forward “standard/obvious” algorithm.

Phoenix.PubSub is quite straight forward. Phoenix Presence is more complex given it is managing distributed state (hence the CRDT).

1 Like