Apa itu Remote Procedure Call (RPC)?

Remote Procedure Call (RPC) adalah protokol komunikasi perangkat lunak yang memungkinkan satu program meminta layanan dari program lain yang berada di komputer dan jaringan berbeda, tanpa perlu memahami detail jaringan tersebut. Secara spesifik, RPC digunakan untuk memanggil proses lain di sistem jarak jauh seolah-olah proses itu berjalan di sistem lokal. Pemanggilan prosedur ini juga sering disebut sebagai function call atau subroutine call.

RPC berfungsi seperti protokol transport tingkat rendah yang membawa paket data antara program yang saling berkomunikasi menggunakan model client-server. Program yang meminta layanan disebut klien, sedangkan program yang memberikan layanan disebut server. Seperti pemanggilan prosedur lokal, RPC adalah operasi sinkron yang membuat program pemanggil harus menunggu hingga hasil prosedur jarak jauh dikembalikan. Namun, penggunaan proses ringan atau thread yang berbagi ruang alamat yang sama memungkinkan beberapa RPC berjalan secara bersamaan.

Interface Definition Language (IDL)—bahasa spesifikasi yang digunakan untuk mendeskripsikan antarmuka aplikasi (API)—sering digunakan dalam perangkat lunak RPC. Dalam konteks ini, IDL berfungsi sebagai jembatan antara mesin yang mungkin menggunakan sistem operasi (OS) dan bahasa pemrograman yang berbeda. Ini berarti RPC dapat digunakan di berbagai OS seperti Windows, Unix, dan macOS.

Apa yang dilakukan RPC?

RPC sering digunakan untuk membangun dan berinteraksi dengan sistem terdistribusi. RPC memungkinkan sebuah program memanggil subrutin di komputer lain tanpa menyadari bahwa panggilan tersebut bersifat jarak jauh. Meskipun RPC tampak seperti protokol transport, sebenarnya RPC adalah prosedur komunikasi antar-proses.

Ketika sebuah pernyataan atau instruksi program yang menggunakan kerangka kerja RPC dikompilasi menjadi program yang dapat dieksekusi, sebuah stub disertakan. Stub adalah potongan kode yang digunakan untuk mengonversi parameter yang dikirim antara klien dan server. Stub bertindak sebagai perwakilan dari kode prosedur jarak jauh. Saat program dijalankan dan pemanggilan prosedur dilakukan, stub menerima permintaan dan meneruskannya ke program runtime klien di komputer lokal. Saat pertama kali stub klien dipanggil, ia menghubungi server nama untuk menentukan alamat transport tempat server berada.

Program runtime klien mengetahui cara mengarahkan pesan ke komputer jarak jauh dan aplikasi server, lalu mengirimkan pesan yang berisi permintaan prosedur jarak jauh. Server juga memiliki program runtime dan stub yang berfungsi sebagai antarmuka ke prosedur jarak jauh itu sendiri. Protokol permintaan-balasan dikembalikan dengan cara yang sama.

Bagaimana RPC bekerja?

Ketika pemanggilan prosedur jarak jauh dilakukan, lingkungan pemanggilan pertama-tama dihentikan sementara. Parameter prosedur kemudian dikirim melalui jaringan ke perangkat tempat prosedur akan dieksekusi. Setelah itu, prosedur mulai berjalan di lingkungan tersebut.

Ketika prosedur selesai, data dikirim kembali ke lingkungan pemanggilan, dan eksekusi program dilanjutkan seolah-olah prosedur tersebut dipanggil secara lokal.

Berikut langkah-langkah yang terjadi dalam RPC:

  1. Klien memanggil stub klien. Panggilan ini dilakukan seperti pemanggilan prosedur lokal dengan parameter yang dimasukkan ke dalam stack.
  2. Stub klien mengemas parameter prosedur ke dalam pesan dan membuat sistem panggilan untuk mengirim pesan tersebut. Proses ini disebut marshaling.
  3. Sistem operasi lokal klien mengirim pesan ke perangkat server jarak jauh.
  4. Lapisan transport sistem operasi server meneruskan paket yang masuk ke stub server.
  5. Stub server mengekstrak parameter dari pesan, proses ini disebut unmarshaling.
  6. Ketika prosedur server selesai, ia mengembalikan hasilnya ke stub server yang kemudian mengemas nilai pengembalian ke dalam pesan dan mengirimkannya ke lapisan transport.
  7. Lapisan transport mengirim pesan kembali ke lapisan transport klien, yang kemudian meneruskan pesan ke stub klien.
  8. Stub klien melakukan unmarshaling pada parameter yang dikembalikan, dan eksekusi kembali ke pemanggil.

RPC juga dapat dimodifikasi agar lebih efektif di lingkungan lain, seperti dalam arsitektur microservices.

Jenis-jenis RPC

Ada beberapa model RPC dan implementasi komputasi terdistribusi. Salah satu model populer adalah Distributed Computing Environment dari Open Software Foundation. IEEE mendefinisikan RPC dalam standar ISO “ISO/IEC 11578:1996.”

Contoh konfigurasi RPC meliputi:

  • Synchronous. Metode standar RPC, di mana klien membuat panggilan dan menunggu balasan dari server.
  • Nonblocking. Klien membuat panggilan tetapi tidak menunggu balasan dan melanjutkan prosesnya sendiri.
  • Batch-mode. Klien mengirim beberapa panggilan nonblocking secara bersamaan.
  • Broadcast. Klien mengirim pesan ke banyak server sekaligus dan menerima semua balasannya.
  • Callback. Klien membuat panggilan client-server yang tidak memblokir.

Kelebihan dan Kekurangan RPC

Keunggulan RPC:

  • Memudahkan komunikasi antara klien dan server melalui prosedur pemanggilan di berbagai bahasa.
  • Dapat digunakan di lingkungan lokal maupun terdistribusi.
  • Mendukung model proses dan thread.
  • Menyembunyikan mekanisme pertukaran pesan, menyediakan abstraksi.
  • Mengurangi banyak lapisan protokol untuk meningkatkan performa.

Kekurangan RPC:

  • Penggunaan sumber daya lebih kompleks, kurang cocok untuk transfer data dalam jumlah besar.
  • Rentan terhadap kegagalan karena melibatkan komunikasi antar sistem.
  • Tidak sefleksibel API lain seperti REST.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *