[erlang-questions] Distibuted-Erlang practical case studies / examples

Oliver Korpilla Oliver.Korpilla@REDACTED
Mon May 13 10:22:00 CEST 2019


we use distributed BEAM nodes connected by the Erlang Distribution Protocol in several applications at my workplace.

One application had one node handling all the central functions while the handling of users (potentially 10,000) was isolated into another node. If we needed the ability to handle more users than the current amount of connected nodes could handle, we connected more nodes. We used both message passing and distributed Mnesia in this application.

We're also building a load generator. It will run through messaging scenarios useful in a Telco application, trying to fill as many parallel queues in the system under test as possible. Again, the choice is to run them on distributed BEAM nodes. The communication between nodes is based mostly on message passing and synchronous gen_server calls where needed. (Though in this application, once everything is set up, no more messages will be passed between nodes and the configured processes will just fire away at their network interfaces according to pre-configured scenarios.)

We basically always opt to add more BEAM nodes when we want to utilize more cores distributed over more machines within the same network.

The main advantage of BEAM nodes I see in my work is that where something runs can be very flexible when needed. We used :gproc and now :syn to benefit from that flexibility, freeing us from the need to know where something is run. For example:

I had to design an application without knowing whether the underlying system would allow us to start BEAM with multi-core enabled or if each BEAM node would be pinned to just one core. (It was pretty clear that one core would not cut it for our requirements.) I opted to implement it as separate communicating applications that can be deployed into multiple BEAM nodes if needed. In the end, this wasn't necessary, so we deployed all parts into the same BEAM node. All we needed to change was the release bundling of the software but not the software itself.

When we learned that we need to scale that application, this initial design decision in turn enabled us to do so. Spreading things out is easy with BEAM but one has to consider the performance implications. Most communication should happen within a node, for example.

So, these were my use cases.


Gesendet: Sonntag, 12. Mai 2019 um 16:45 Uhr
Von: "I Gusti Ngurah Oka Prinarjaya" <okaprinarjaya@REDACTED>
An: Erlang <erlang-questions@REDACTED>
Betreff: [erlang-questions] Distibuted-Erlang practical case studies / examples

I just learn about how to ping a remote erlang node,  call erlang program in a remote erlang node by following this chapter https://learnyousomeerlang.com/distribunomicon . 
But, i can't imagine what kind of simple solution that i can build by utilizing Erlang's distributed behavior / feature / ability.
Ok, first, i need some simple case studies utilizingg distributed behavior / ability from erlang.
Second, Why do we utilizing distributed behavior / ability of erlang? Or in other words,
which is better? utilizing rpc:call() or call other service in other remote node just through HTTP (REST maybe) ? 

Thank you
 _______________________________________________ erlang-questions mailing list erlang-questions@REDACTED http://erlang.org/mailman/listinfo/erlang-questions[http://erlang.org/mailman/listinfo/erlang-questions]

More information about the erlang-questions mailing list