RPC Nedir? Remote Procedure Call Nasıl Çalışır?
RPC, yani Remote Procedure Call, Türkçede Uzak Yordam Çağrısı olarak ifade edilen bir iletişim yöntemidir. RPC teknolojisi, bir bilgisayarda çalışan uygulamanın ağ üzerindeki başka bir bilgisayarda veya sunucuda bulunan bir fonksiyonu, sanki kendi sistemi üzerindeymiş gibi çalıştırmasını sağlar.
Özellikle dağıtık sistemler, mikroservis mimarileri, istemci-sunucu uygulamaları ve ağ tabanlı servislerde yaygın olarak kullanılan RPC, farklı sistemlerin birbiriyle haberleşmesini kolaylaştırır.
Bu yazımızda RPC nedir, RPC nasıl çalışır, RPC ne işe yarar, RPC ile REST API arasındaki farklar nelerdir ve RPC hangi alanlarda kullanılır gibi soruları detaylı olarak ele alacağız.
RPC Nedir?
RPC, İngilizce Remote Procedure Call ifadesinin kısaltmasıdır.
Temel amacı, farklı bilgisayarlarda çalışan yazılımların birbirlerinin fonksiyonlarını veya prosedürlerini çağırabilmesini sağlamaktır.
Örneğin bir istemci uygulamasının farklı bir sunucuda bulunan aşağıdaki fonksiyonu çalıştırmak istediğini düşünelim:
kullaniciBilgisiGetir(123)
RPC kullanıldığında istemci, bu fonksiyonun uzak bir sunucuda çalıştığını çoğu zaman doğrudan yönetmek zorunda kalmaz. RPC sistemi bağlantıyı kurar, isteği gönderir, sunucudaki fonksiyonu çalıştırır ve sonucu istemciye geri iletir.
Bu nedenle RPC'nin temel amacı, uzaktaki işlemleri yerel bir fonksiyon çağrısı kadar kolay hale getirmektir.
RPC Açılımı Nedir?
RPC'nin açılımı:
Remote Procedure Call
Türkçe karşılığı ise:
Uzak Yordam Çağrısı veya Uzaktan Prosedür Çağrısı şeklinde kullanılabilir.
Buradaki "procedure" ifadesi bir fonksiyon, metod veya gerçekleştirilecek işlem anlamına gelir.
RPC Nasıl Çalışır?
RPC çalışma mantığında genellikle iki temel taraf bulunur:
-
İstemci yani client
-
Sunucu yani server
İstemci belirli bir işlemin yapılmasını ister. RPC sistemi bu isteği ağ üzerinden sunucuya gönderir.
Sunucu işlemi gerçekleştirir ve sonucu tekrar istemciye iletir.
1. İstemci Bir Fonksiyon Çağrısı Yapar
İstemci tarafında çalışan uygulama bir fonksiyon çağırır.
Örneğin:
getUser(25)
Bu fonksiyon gerçekte başka bir sunucuda bulunabilir.
2. RPC İsteği Hazırlanır
RPC sistemi fonksiyon adı ve parametreleri ağ üzerinden gönderilebilecek bir formata dönüştürür.
Bu işleme genellikle serialization veya marshalling adı verilir.
Örneğin aşağıdaki bilgiler gönderilebilir:
Method: getUser
ID: 25
3. İstek Sunucuya Gönderilir
Hazırlanan RPC isteği TCP, HTTP, HTTP/2 veya başka bir ağ protokolü üzerinden uzak sunucuya gönderilir.
Kullanılan protokol, RPC teknolojisine göre değişebilir.
4. Sunucu İsteği İşler
Sunucu RPC isteğini alır ve ilgili fonksiyonu çalıştırır.
Örneğin:
getUser(25)
Sunucu veritabanından ilgili kullanıcıyı bulabilir.
5. Sonuç İstemciye Gönderilir
Sunucu işlemin sonucunu tekrar RPC sistemi aracılığıyla istemciye gönderir.
Örneğin:
{
"id": 25,
"name": "Ahmet"
}
İstemci uygulaması gelen veriyi kullanmaya devam eder.
RPC Ne İşe Yarar?
RPC'nin temel kullanım amacı, farklı sistemlerin veya servislerin birbiriyle kolay şekilde iletişim kurmasını sağlamaktır.
RPC sayesinde uygulamalar uzaktaki servislerin fonksiyonlarını çağırabilir.
Mikroservisler Arasında İletişim
Modern uygulamalarda sistemler genellikle birden fazla mikroservisten oluşur.
Örneğin:
Kullanıcı Servisi
Ödeme Servisi
Sipariş Servisi
Bildirim Servisi
Bu servisler RPC aracılığıyla birbirleriyle iletişim kurabilir.
Dağıtık Sistemlerde İletişim
Farklı sunucularda çalışan uygulamaların koordineli şekilde çalışabilmesi için RPC kullanılabilir.
Özellikle büyük ölçekli altyapılarda RPC önemli bir iletişim yöntemi olabilir.
İstemci-Sunucu Uygulamaları
Bir masaüstü veya mobil uygulama, uzak sunucudaki fonksiyonları RPC üzerinden çağırabilir.
Örneğin bir oyun istemcisi, oyun sunucusuna karakter bilgilerini gönderebilir.
RPC Kullanım Alanları Nelerdir?
RPC birçok farklı sistem ve uygulamada kullanılabilir.
Mikroservis Mimarileri
RPC'nin en yaygın kullanım alanlarından biri mikroservis altyapılarıdır.
Servisler arasında hızlı ve yapılandırılmış iletişim sağlar.
Cloud Sistemleri
Bulut altyapılarında farklı servislerin birbirleriyle iletişim kurması için RPC kullanılabilir.
Dağıtık Veritabanları
Birden fazla sunucuda çalışan veritabanı sistemlerinde düğümler arasındaki iletişim RPC üzerinden gerçekleştirilebilir.
Oyun Sunucuları
Online oyun sistemlerinde istemci ve sunucu arasında belirli işlemler RPC mantığıyla gerçekleştirilebilir.
Örneğin:
Oyuncuyu oluştur
Karakter bilgisini getir
Skoru güncelle
Maç başlat
Ağ Servisleri
Sunucular arasında yapılan bazı yönetim işlemleri ve servis çağrılarında RPC protokolleri kullanılabilir.
RPC Türleri Nelerdir?
RPC tek bir teknoloji değildir. Farklı RPC sistemleri ve protokolleri bulunmaktadır.
JSON-RPC Nedir?
JSON-RPC, iletişim sırasında JSON formatını kullanan hafif bir RPC protokolüdür.
Örnek bir JSON-RPC isteği şu şekilde olabilir:
{
"jsonrpc": "2.0",
"method": "getUser",
"params": {
"id": 25
},
"id": 1
}
Basit yapısı nedeniyle çeşitli web ve servis uygulamalarında kullanılabilir.
XML-RPC Nedir?
XML-RPC, RPC mesajlarını XML formatında gönderen eski ve yaygın protokollerden biridir.
JSON-RPC'ye göre daha fazla veri boyutu oluşturabilir.
gRPC Nedir?
gRPC, Google tarafından geliştirilen yüksek performanslı bir RPC framework'üdür.
Genellikle:
HTTP/2
Protocol Buffers
Streaming
Service Definition
gibi teknolojilerden yararlanır.
Özellikle mikroservis mimarilerinde oldukça yaygın olarak kullanılmaktadır.
gRPC ile RPC Arasındaki Fark Nedir?
RPC genel bir iletişim yaklaşımını ifade eder.
gRPC ise RPC mantığını kullanan belirli bir teknolojidir.
Yani:
RPC = Genel yöntem
gRPC = RPC kullanan framework
Bunun dışında JSON-RPC ve XML-RPC gibi farklı RPC çözümleri de bulunmaktadır.
RPC ve REST API Arasındaki Fark Nedir?
RPC ve REST API benzer amaçlarla kullanılabilse de çalışma mantıkları farklıdır.
RPC İşlem Odaklıdır
RPC sistemlerinde genellikle doğrudan bir fonksiyon çağrılır.
Örneğin:
createUser()
deleteUser()
getUser()
REST Kaynak Odaklıdır
REST API sistemlerinde ise genellikle kaynaklar üzerinde işlem yapılır.
Örneğin:
GET /users/25
POST /users
DELETE /users/25
Bu nedenle REST daha çok kaynak tabanlı, RPC ise işlem tabanlı bir yaklaşım sunar.
RPC Avantajları Nelerdir?
RPC kullanmanın birçok avantajı bulunmaktadır.
Basit Fonksiyon Çağrısı Mantığı
Geliştiriciler uzak servisleri yerel fonksiyon çağrıları gibi kullanabilir.
Yüksek Performans
Özellikle gRPC gibi modern RPC teknolojileri oldukça yüksek performans sunabilir.
Mikroservisler İçin Uygundur
Birbirleriyle sık iletişim kuran servisler için oldukça kullanışlıdır.
Farklı Programlama Dilleriyle Çalışabilir
Bir servis Java ile geliştirilirken diğer servis Go, Python veya C# kullanabilir.
RPC framework'leri bu servisler arasında iletişim sağlayabilir.
RPC Dezavantajları Nelerdir?
RPC sistemlerinin bazı dezavantajları da bulunmaktadır.
Ağ Bağımlılığı
Yerel fonksiyon çağrılarından farklı olarak RPC işlemleri ağ bağlantısına ihtiyaç duyar.
Ağ problemi yaşanması durumunda RPC isteği başarısız olabilir.
Timeout Sorunları
Uzak sunucunun yanıt vermemesi durumunda timeout meydana gelebilir.
Servis Bağımlılıkları
Bir servis başka bir RPC servisine yoğun şekilde bağımlı hale gelebilir.
Bu durum sistem mimarisini karmaşıklaştırabilir.
Hata Yönetimi Daha Karmaşıktır
Uzak servislerde yaşanan bağlantı problemleri, sunucu hataları veya ağ gecikmeleri ayrıca yönetilmelidir.
RPC Hatası Nedir?
Windows veya başka işletim sistemlerinde zaman zaman RPC server unavailable gibi hatalar görülebilir.
Bu hata genellikle istemci ile RPC sunucusu arasında bağlantı kurulamadığını belirtir.
Windows sistemlerinde görülebilecek örnek hata:
The RPC server is unavailable.
Türkçe sistemlerde ise:
RPC sunucusu kullanılamıyor.
şeklinde görüntülenebilir.
RPC Sunucusu Kullanılamıyor Hatası Neden Olur?
Bu hata farklı nedenlerden kaynaklanabilir.
RPC Servisinin Çalışmaması
Windows üzerinde RPC ile ilgili servisler durmuş olabilir.
Firewall Engellemesi
Güvenlik duvarı RPC bağlantılarını engelliyor olabilir.
DNS Sorunları
İstemci uzak sunucunun IP adresini çözemiyorsa bağlantı kurulamayabilir.
Ağ Bağlantısı Problemleri
Sunucuya erişim olmadığı durumlarda RPC işlemleri başarısız olabilir.
Port Engellemeleri
RPC iletişimi için gereken bazı portların kapalı olması bağlantı hatalarına neden olabilir.
Windows RPC Servisi Nedir?
Windows işletim sistemlerinde RPC birçok sistem bileşeninin iletişim kurmasında kullanılan önemli bir servistir.
Windows üzerinde servis adı genellikle:
Remote Procedure Call (RPC)
şeklinde görüntülenir.
Bu servis Windows'un temel bileşenlerinden biri olduğu için devre dışı bırakılması sistemde ciddi problemlere neden olabilir.
RPC Hangi Portu Kullanır?
Windows RPC sistemlerinde en bilinen portlardan biri:
TCP 135
portudur.
Bu port RPC Endpoint Mapper tarafından kullanılabilir.
Ancak RPC bağlantıları yalnızca 135 portundan oluşmaz. RPC Endpoint Mapper bağlantıyı başlattıktan sonra sistem istemciyi farklı dinamik portlara yönlendirebilir.
Modern Windows sistemlerinde dinamik RPC port aralığı genellikle yüksek numaralı portlardan oluşur.
Bu nedenle kurumsal firewall yapılandırmalarında yalnızca TCP 135 açılması her zaman yeterli olmayabilir.
RPC Endpoint Mapper Nedir?
RPC Endpoint Mapper, Windows sistemlerinde RPC servislerinin hangi portlarda çalıştığını belirleyen bileşendir.
İstemci öncelikle RPC Endpoint Mapper ile iletişim kurabilir.
Daha sonra hangi RPC servisinin hangi port üzerinde çalıştığını öğrenerek ilgili servise bağlantı sağlayabilir.
Basitleştirilmiş yapı şu şekildedir:
Client
|
v
TCP 135
|
RPC Endpoint Mapper
|
v
Dinamik RPC Portu
|
v
RPC Servisi
RPC Güvenli midir?
RPC'nin güvenliği kullanılan protokole ve yapılandırmaya bağlıdır.
Yanlış yapılandırılmış RPC servisleri güvenlik riski oluşturabilir.
Özellikle internete doğrudan açık RPC servisleri saldırganlar tarafından taranabilir veya kötüye kullanılmaya çalışılabilir.
Bu nedenle RPC servisleri için:
-
Firewall kuralları kullanılmalı
-
Gereksiz portlar kapatılmalı
-
Kimlik doğrulama uygulanmalı
-
Ağ erişimleri sınırlandırılmalı
-
Servisler düzenli olarak güncellenmeli
gibi güvenlik önlemleri alınmalıdır.
RPC ile HTTP Arasındaki Fark Nedir?
HTTP bir iletişim protokolüdür.
RPC ise uzak sistemlerdeki fonksiyonları çağırmaya yönelik bir iletişim yöntemidir.
Bazı RPC teknolojileri taşıma protokolü olarak HTTP kullanabilir.
Örneğin gRPC genellikle HTTP/2 üzerinde çalışır.
Bu nedenle RPC ve HTTP doğrudan birbirinin alternatifi değildir.
RPC ile WebSocket Arasındaki Fark Nedir?
WebSocket, istemci ve sunucu arasında sürekli ve çift yönlü bağlantı sağlayan bir iletişim protokolüdür.
RPC ise belirli bir uzak fonksiyonun çağrılmasına odaklanır.
Bazı sistemlerde WebSocket üzerinden RPC benzeri yapılar oluşturmak da mümkündür.
RPC ile SOAP Arasındaki Fark Nedir?
SOAP, yapılandırılmış web servisleri geliştirmek için kullanılan XML tabanlı bir protokoldür.
RPC ise daha genel bir uzak fonksiyon çağırma yaklaşımıdır.
Bazı eski SOAP servislerinde RPC tarzı iletişim modelleri kullanılabilir.
RPC ile REST Hangisi Daha İyi?
Bu sorunun cevabı projenin ihtiyaçlarına bağlıdır.
REST API genellikle:
-
Web servisleri
-
Public API'ler
-
Mobil uygulamalar
-
Tarayıcı tabanlı sistemler
için sık tercih edilir.
RPC veya gRPC ise:
-
Mikroservis iletişimi
-
Düşük gecikme gerektiren sistemler
-
Yüksek performanslı backend servisleri
-
Servisler arası iletişim
için tercih edilebilir.
RPC Örneği
Basit bir RPC yapısını aşağıdaki şekilde düşünebiliriz.
İstemci:
topla(10, 20)
RPC sistemi isteği sunucuya gönderir.
Sunucu:
10 + 20 = 30
işlemini gerçekleştirir.
Sonuç istemciye:
30
olarak döndürülür.
İstemci açısından işlem normal bir fonksiyon çağrısı gibi görünebilir.
RPC Hakkında Sık Sorulan Sorular
RPC neyin kısaltmasıdır?
RPC, Remote Procedure Call ifadesinin kısaltmasıdır.
RPC Türkçesi nedir?
Türkçede genellikle Uzak Yordam Çağrısı veya Uzaktan Prosedür Çağrısı olarak ifade edilir.
RPC ne işe yarar?
Bir bilgisayarda çalışan uygulamanın başka bir bilgisayarda bulunan fonksiyon veya servisi ağ üzerinden çağırmasını sağlar.
RPC hangi portu kullanır?
Windows RPC sistemlerinde TCP 135 portu RPC Endpoint Mapper tarafından kullanılabilir. RPC servisleri ayrıca dinamik portlardan da yararlanabilir.
gRPC nedir?
gRPC, Google tarafından geliştirilen ve RPC mimarisini kullanan yüksek performanslı bir iletişim framework'üdür.
RPC bir API midir?
RPC doğrudan bir API türü olarak düşünülebilir ancak temel olarak servisler arasında uzaktan fonksiyon çağrısı yapılmasını sağlayan bir iletişim modelidir.
RPC internet üzerinden çalışır mı?
Evet. Teknik olarak RPC ağ üzerinden çalışabilir. Ancak güvenlik nedeniyle RPC servislerinin doğrudan internete açık şekilde yayınlanması her zaman önerilmez.
Özet
RPC nedir? sorusunun en basit cevabı, bir bilgisayarda çalışan uygulamanın başka bir bilgisayarda bulunan fonksiyonu ağ üzerinden çağırmasını sağlayan iletişim yöntemidir.
Remote Procedure Call teknolojisi özellikle dağıtık sistemler, mikroservis mimarileri, istemci-sunucu uygulamaları ve modern backend altyapılarında önemli bir role sahiptir.
JSON-RPC, XML-RPC ve gRPC gibi farklı RPC teknolojileri bulunurken Windows işletim sistemleri de birçok sistem servisi için RPC altyapısından yararlanır.
Doğru yapılandırıldığında RPC, farklı sistemlerin hızlı ve verimli şekilde iletişim kurmasını sağlayan güçlü bir teknolojidir.