Apa itu RPC (Remote Procedure Call)?
Menurut techtarget.com, RPC (Remote Procedure Call) adalah protokol komunikasi yang memungkinkan suatu program untuk meminta layanan dari program lain pada komputer berbeda dalam suatu jaringan.
RPC bermanfaat untuk melakukan request pada sistem jarak jauh, seolah-olah sedang menggunakan sistem lokal.
Pada sistem lokal yang biasanya, sebuah program dapat membuat request dalam alamat yang sama. Request tersebut kemudian bergerak dari pemanggil ke penerima, dan hasilnya dikembalikan. RPC memperluas fungsi tersebut dengan memfasilitasi komunikasi melalui jaringan.
Dengan demikian, program di suatu mesin (client) dapat memanggil prosedur di komputer lain (server) dan menerima hasilnya kembali.
Mekanisme Kerja RPC
RPC berfungsi sebagai mekanisme untuk komunikasi dan koordinasi antara proses atau program yang terletak pada mesin yang berbeda dalam suatu jaringan. Berdasarkan techtarget.com, berikut adalah cara kerja dalam panggilan RPC:
- Client memulai panggilan: Program client memulai panggilan RPC seolah-olah meminta prosedur dalam mesin lokal dan memanggil client stub. Client stub bertindak sebagai proxy untuk prosedur jarak jauh yang sebenarnya dan bertanggung jawab untuk mengemas parameter prosedur ke dalam pesan.
- Marshalling: Marshalling melakukan konversi parameter prosedur dari tipe data aslinya ke dalam format yang cocok untuk transmisi melalui jaringan.
- Mengirim pesan: Sistem operasi lokal client mengirimkan pesan yang berisi parameter prosedur yang disusun dari mesin client ke mesin server jarak jauh.
- Menerima pesan: Di sisi server, sistem operasi server menerima pesan masuk dari jaringan dan meneruskannya ke server stub.
- Unmarshalling: Server stub menerima pesan dan membongkar parameter prosedur dari pesan. Pada tahap ini, dilakukan konversi data kembali ke format aslinya sehingga cocok untuk diproses oleh prosedur lokal server.
- Eksekusi prosedur: Server stub kemudian memanggil prosedur server yang sebenarnya untuk melakukan tugas atau layanan yang diminta.
- Menyusun return value: Setelah prosedur server menyelesaikan tugasnya, ia kembali ke server stub, yang kemudian mengatur return value ke pesan lain.
- Mengembalikan Pesan: Server stub menyerahkan pesan yang berisi return value ke transport layer, yang menangani pengiriman pesan kembali ke transport layer client.
- Menerima Pesan Kembali: Transport layer client mengirimkan pesan ke client stub. Client stub kemudian membongkar return value dari pesan dan mengonversinya kembali ke tipe data aslinya.
- Kembali ke pemanggil: Client stub mengembalikan return value tersebut ke pemanggil, dan panggilan RPC selesai.
Kelebihan RPC
Melansir dari geekforgeeks.org, berikut ini adalah kelebihan RPC:
- Abstraksi komunikasi jaringan: RPC mempermudah pengguna untuk melakukan pengiriman pesan melalui jaringan.
- Performa yang meningkat: RPC menghilangkan banyak protokol sehingga menghasilkan performa yang lebih baik.
- Dukungan untuk aplikasi: RPC memungkinkan aplikasi berfungsi di berbagai lingkungan secara mulus.
- Tidak memerlukan banyak coding ulang: RPC meminimalkan kebutuhan untuk penulisan ulang kode.
- Dukungan untuk model berbeda: RPC mengakomodasi process-oriented model dan thread-oriented model.
Kekurangan RPC
Menurut javatpoint.com, kekurangan RPC di antaranya adalah:
- Passing parameter terbatas: RPC hanya mengizinkan passing parameter berdasarkan nilai atau nilai pointer sehingga membatasi mekanisme passing parameter yang lebih canggih.
- Peningkatan overhead: Pemanggilan prosedur jarak jauh menimbulkan overhead karena komunikasi jaringan sehingga berpotensi menyebabkan waktu respons lebih lambat dibandingkan dengan prosedur lokal.
- Rentan terhadap kegagalan: Penggunaan banyak komponen seperti sistem komunikasi dan mesin jarak jauh membuat RPC lebih rentan terhadap kegagalan.
- Kendala arsitektur hardware: RPC kurang fleksibel dalam beradaptasi dengan arsitektur hardware yang berbeda karena sebagian besar berbasis interaksi.
- Biaya proses lebih tinggi: Penggunaan panggilan prosedur jarak jauh dapat meningkatkan biaya proses secara keseluruhan karena biaya tambahan yang diperlukan dalam komunikasi jaringan.
FAQ (Frequently Asked Question)
Bagaimana implementasi RPC?
RPC banyak diterapkan dalam berbagai kasus di mana komunikasi antara sistem jarak jauh diperlukan. Beberapa implementasi RPC yang umum meliputi:
- Arsitektur client-server: RPC merupakan dasar untuk arsitektur client-server, di mana client membuat permintaan jarak jauh ke server untuk mengakses layanan atau data.
- Distributed system: RPC sangat penting untuk membangun sistem terdistribusi, yang komponennya dapat didistribusikan ke beberapa mesin dan perlu berkomunikasi satu sama lain.
- Arsitektur microservice: Dalam sistem berbasis microservice, RPC digunakan untuk memfasilitasi komunikasi antara berbagai microservice yang dapat digunakan secara independen dan dijalankan pada mesin yang berbeda.
- Sistem file jarak jauh: RPC dapat dimanfaatkan untuk mengakses file dan sumber daya pada sistem file jarak jauh sehingga dapat berbagi dan manajemen file tanpa batas di seluruh jaringan.
- Akses database jarak jauh: RPC dapat juga digunakan untuk mengakses database yang di-hosting di server jarak jauh sehingga client dapat melakukan operasi database pada mesin jarak jauh.