Balanceamento de Carga e Failover entre Nós
Distribua o trabalho uniformemente entre nós Erlang e mantenha os serviços disponíveis através de failover automático num cluster distribuído.
Balanceamento de Carga e Failover entre Nós é uma aula grátis de Erlang OTP: Distributed & Fault-Tolerant Systems Programming no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Erlang OTP: Distributed & Fault-Tolerant Systems Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Erlang OTP: Distributed & Fault-Tolerant Systems Programming inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Why Load Balancing?
In a cluster, spreading work across nodes prevents any one node from becoming a bottleneck and lets you scale by adding machines. Failover keeps the system available when a node dies.
Listing Cluster Nodes
A node sees its connected peers with nodes/0. This list is the pool you balance work over.
nodes().
% => ['worker1@host', 'worker2@host']Round-Robin Dispatch
A simple strategy cycles through nodes in order, giving each an equal share of tasks.
pick_node(Index) ->
Nodes = [node() | nodes()],
lists:nth((Index rem length(Nodes)) + 1, Nodes).Spawning on a Remote Node
spawn/4 can start a process on a chosen node, sending the work where you want it.
spawn(TargetNode, my_worker, run, [Task]).The pg Process Groups
The pg module maintains named groups of processes spread across nodes. You can fetch group members and dispatch to them.
pg:join(workers, self()).
Members = pg:get_members(workers).Choosing a Local Member
For low latency, prefer a worker on the local node when one exists, falling back to remote members otherwise.
case pg:get_local_members(workers) of
[] -> pick_remote();
Local -> hd(Local)
end.Detecting Node Failure
Call net_kernel:monitor_nodes(true) to receive {nodedown, Node} messages when a peer disconnects, the trigger for failover.
net_kernel:monitor_nodes(true).
% receive {nodedown, Node} -> handle_failure(Node) end.Failover Strategy
On nodedown, redistribute that node's pending work to surviving nodes and remove it from your dispatch pool.
handle_failure(Node) ->
Tasks = pending_tasks(Node),
[reassign(T) || T <- Tasks].Stateless vs Stateful
Stateless work is trivial to reassign. Stateful work needs its state replicated (e.g. via Mnesia) so a survivor can resume it. Design state placement up front.
Avoiding Thundering Herds
When a node returns, do not dump all reconnection or rebalancing work at once. Stagger it to avoid overwhelming the cluster.
Putting It Together
A resilient setup: register workers in a pg group, dispatch round-robin with local preference, monitor nodes, and reassign work on failure with state backed by replicated storage.
Quick Check
Test your failover knowledge.
Recap
You learned distributed load balancing and failover.
- Dispatch work across
nodes/0with round-robin and local preference - Use
pggroups to track workers - Monitor nodes and reassign work on
nodedown - Replicate state for stateful failover
Perguntas Frequentes
A aula “Balanceamento de Carga e Failover entre Nós” é grátis?
Sim — o texto completo de “Balanceamento de Carga e Failover entre Nós” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Erlang OTP: Distributed & Fault-Tolerant Systems Programming, atualize para CoddyKit PRO. O curso de Erlang OTP: Distributed & Fault-Tolerant Systems Programming inclui 4 aulas no total.
O que vou aprender em “Balanceamento de Carga e Failover entre Nós”?
Distribua o trabalho uniformemente entre nós Erlang e mantenha os serviços disponíveis através de failover automático num cluster distribuído. Você pratica Erlang OTP: Distributed & Fault-Tolerant Systems Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Erlang OTP: Distributed & Fault-Tolerant Systems Programming?
Nenhuma experiência prévia é necessária. Erlang OTP: Distributed & Fault-Tolerant Systems Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Balanceamento de Carga e Failover entre Nós”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Erlang OTP: Distributed & Fault-Tolerant Systems Programming?
Sim. Cada aula de Erlang OTP: Distributed & Fault-Tolerant Systems Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Tratamento de partições de rede
- Dados distribuídos com ETS e Mnesia
- Design de escalabilidade e resiliência
- Balanceamento de Carga e Failover entre Nós