Netty ile basit RPC

 

Netty.IO

Netty, Java ile yazılmış bir çok protokolü barındıran bir event processing kütüphanesidir. Netty kullanarak HTTP web server (HTTP/2 dahil), chat servisleri, message broker, internal/external api, rpc, data pipeline transporter gibi uygulamalar geliştirebilmek mümkün. Kısaca network üzerinden veri akışına dayalı sistemler için kullanılan oldukça yararlı Java kütüphanesi.

Netty genel mimarisi aşağıdaki gibidir.

 

RPC

Bir yada birçok sistemden sunulan client-server tabanlı servislerdir. Servis içerisinde belirli bir protokol dahilinde, istemci işleri sunucudan ister ve sunucudan gelen cevaba göre belirli bir karar veren katman, sunucu ise  istemci tarafından istenen işi yapan ve sonucu tekrar istemciye (sonuç olmayabildiği durumlarda olabilir. oneway/async) ileten katmandır.

Netty servislerin genel çalışma mantığı genel olarak şu şekildedir.

netty-architecture

 

Örnek olarak iki adet foksiyon düşünelim,

  • 2 adet int türünde değişkeni alan, toplayan ve sonucu geri dönen fonksiyon.
    f(x) = a + b
  • 2 adet int türünde değişken alan, çıkaran ve sonucu geri döndüren fonksiyon.
    f(x) = a - b

 

RPC Implementasyon

Netty üzerinde geliştireceğimiz RPC için serileştirme katmanında Google Protocol Buffers kullanacak. Genel IO için kullanacağımız standart Protocol event’i olacak. Bu event için type, işlemin türünü gösterecek, msg herhangi bir warning veya error mesajı varsa bunu taşıyacak ve data ise işlem ile ilgili ana veriyi taşıyacak.

 

message Protocol {
    required int32 type = 1;

    required bytes data = 2;

    optional string msg = 3;
}

message Operation {
    required int32 a = 1;

    required int32 b = 2;
}

message Conclusion {
    optional int32 out = 3;
}

 

Sonuç

Yazı genel olarak basit seviyede RPC mantığını, Netty’nin çalışma mantığını içeriyor.

Kaynak kodlar : https://github.com/trK54Ylmz/netty-rpc-example

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir