Erlang OTP: Distributed & Fault-Tolerant Systems Programming · บทเรียน

การกระจายภาระงานและการสลับไปใช้ระบบสำรองระหว่างโหนด

กระจายงานอย่างสม่ำเสมอระหว่างโหนด Erlang และทำให้บริการพร้อมใช้งานด้วยการสลับไปใช้ระบบสำรองอัตโนมัติในคลัสเตอร์แบบกระจาย

บทเรียน 4 จาก 413 ขั้นตอน

การกระจายภาระงานและการสลับไปใช้ระบบสำรองระหว่างโหนด เป็นบทเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Erlang OTP: Distributed & Fault-Tolerant Systems Programming มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

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/0 with round-robin and local preference
  • Use pg groups to track workers
  • Monitor nodes and reassign work on nodedown
  • Replicate state for stateful failover
เริ่มต้นได้ฟรี

เรียนรู้ Erlang ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

คำถามที่พบบ่อย

บทเรียน “การกระจายภาระงานและการสลับไปใช้ระบบสำรองระหว่างโหนด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การกระจายภาระงานและการสลับไปใช้ระบบสำรองระหว่างโหนด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Erlang OTP: Distributed & Fault-Tolerant Systems Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Erlang OTP: Distributed & Fault-Tolerant Systems Programming มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การกระจายภาระงานและการสลับไปใช้ระบบสำรองระหว่างโหนด”

กระจายงานอย่างสม่ำเสมอระหว่างโหนด Erlang และทำให้บริการพร้อมใช้งานด้วยการสลับไปใช้ระบบสำรองอัตโนมัติในคลัสเตอร์แบบกระจาย คุณปฏิบัติ Erlang OTP: Distributed & Fault-Tolerant Systems Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Erlang OTP: Distributed & Fault-Tolerant Systems Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การกระจายภาระงานและการสลับไปใช้ระบบสำรองระหว่างโหนด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming นี้ได้ไหม

ได้ บทเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจัดการการแบ่งแยกเครือข่าย
  2. ข้อมูลแบบกระจายด้วย ETS และ Mnesia
  3. การออกแบบเพื่อการขยายขนาดและความยืดหยุ่น
  4. การกระจายภาระงานและการสลับไปใช้ระบบสำรองระหว่างโหนด
← กลับไปที่ Erlang OTP: Distributed & Fault-Tolerant Systems Programming