Pemanggilan Prosedur Jarak Jauh (RPC)
Jalankan fungsi pada node jarak jauh menggunakan RPC untuk memungkinkan komputasi terdistribusi dan pemanggilan layanan di seluruh kluster
Pemanggilan Prosedur Jarak Jauh (RPC) adalah pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Erlang OTP: Distributed & Fault-Tolerant Systems Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
What is Remote Procedure Call?
Imagine you have two Erlang programs running on different machines, or even on the same machine but in separate Erlang "nodes." How do they talk?
Remote Procedure Call (RPC) is a way for one program (the client) to ask another program (the server) to execute a function, just like it would call a local function. The client doesn't need to know the details of network communication.
Erlang's Built-in RPC Module
Erlang makes distributed computing easy with its built-in rpc module. This module provides functions to call or cast computations on remote Erlang nodes.
rpc:call/4: For synchronous calls, meaning the client waits for a reply.rpc:cast/4: For asynchronous calls, where the client doesn't wait for a reply.
These are powerful tools for building distributed applications.
Setting Up for RPC
Before we can use RPC, we need at least two Erlang nodes connected. Each node needs a name and a shared cookie for authentication.
Open two separate terminal windows and start Erlang nodes like this:
- Node 1:
erl -sname server_node -setcookie mysecret - Node 2:
erl -sname client_node -setcookie mysecret
Make sure they can ping each other: net_adm:ping(server_node@yourhostname).
Synchronous RPC with `rpc:call/4`
The rpc:call/4 function is used when you need an immediate answer from the remote node. It takes four arguments:
Node: The name of the remote Erlang node.Module: The module on the remote node where the function resides.Function: The name of the function to execute.Args: A list of arguments for the function.
The calling process will block until it receives a reply or an error.
RPC Call Example: Server Module
Let's create a simple module math_server.erl. Save this code and compile it on server_node:
1. Save as math_server.erl
2. Compile on server_node: c(math_server).
-module(math_server).
-export([add/2, multiply/2]).
add(A, B) ->
A + B.
multiply(A, B) ->
A * B.RPC Call Example: Client Interaction
Now, from client_node, we can call the math_server:add/2 function remotely! Remember to replace yourhostname with your actual machine's hostname.
Type this into client_node's Erlang shell:
rpc:call(server_node@yourhostname, math_server, add, [10, 5]).Understanding RPC Results
When you execute rpc:call/4, Erlang handles the network communication for you. The result of the remote function call is returned directly to the calling process.
If the remote node doesn't exist, the module isn't loaded, or the function crashes, rpc:call/4 will return an error tuple like {badrpc, Reason}. This helps you manage potential issues in your distributed system.
Asynchronous RPC with `rpc:cast/4`
Sometimes you don't need an immediate response from a remote call. You just want to send a request and continue your work. This is where rpc:cast/4 comes in.
rpc:cast/4 works similarly to rpc:call/4 but it's a "fire and forget" operation. The client sends the message and does not wait for a reply, making it non-blocking.
RPC Cast Example: Logger Module
Let's create a simple logger module. Save this as logger.erl and compile it on server_node:
1. Save as logger.erl
2. Compile on server_node: c(logger).
-module(logger).
-export([log_message/1]).
log_message(Message) ->
io:format("~p: Remote log: ~p~n", [self(), Message]).RPC Cast Example: Client Interaction
Now, from client_node, use rpc:cast/4 to send a log message to server_node. Notice that client_node doesn't wait for a response.
Type this into client_node's Erlang shell (replace yourhostname):
You'll see the log message appear on server_node's console!
rpc:cast(server_node@yourhostname, logger, log_message, ["Hello from client!"]).Quick RPC Check
You've learned about synchronous and asynchronous remote procedure calls in Erlang.
Recap: RPC for Distributed Erlang
In this lesson, you explored how Erlang's built-in rpc module enables seamless function execution across different nodes.
- We learned about
rpc:call/4for synchronous, blocking calls when a result is needed. - We also covered
rpc:cast/4for asynchronous, non-blocking calls when no immediate reply is required. - Setting up connected nodes with shared cookies is crucial for RPC to work.
RPC simplifies distributed programming, allowing you to build applications that leverage multiple Erlang nodes easily.
Belajar Erlang dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pemanggilan Prosedur Jarak Jauh (RPC)” gratis?
Ya — teks lengkap “Pemanggilan Prosedur Jarak Jauh (RPC)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming, upgrade ke CoddyKit PRO. Kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pemanggilan Prosedur Jarak Jauh (RPC)”?
Jalankan fungsi pada node jarak jauh menggunakan RPC untuk memungkinkan komputasi terdistribusi dan pemanggilan layanan di seluruh kluster Kamu berlatih Erlang OTP: Distributed & Fault-Tolerant Systems Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Erlang OTP: Distributed & Fault-Tolerant Systems Programming?
Tidak diperlukan pengalaman sebelumnya. Erlang OTP: Distributed & Fault-Tolerant Systems Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Pemanggilan Prosedur Jarak Jauh (RPC)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming ini?
Ya. Setiap pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Komunikasi dan Penyiapan Node
- Pemanggilan Prosedur Jarak Jauh (RPC)
- Pendaftaran Proses Global
- Keamanan Distribusi & Cookie