Page 139 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 139

REST API ve gRPC Mimari Stillerinin Karşılaştırılması | 139





           1. Binary Tabanlı Mesaj Formatları


           Bu  bölümde  binary  tabanlı  mesaj  formatları;  protokol  arabellekleri,  avro,  thrift  başlıkları  altında
           anlatılmıştır.




           1.1. Protobuf (Protokol Arabellekleri)


           Protobuf,  istemci  kütüphanelerinin  otomatik  olarak  oluşturulmasını  ve  mikroservislerin  basit  bir
           şekilde  tanımlanmasını  sağlayan  bir  serileştirme  protokolüdür.  Google,  Protokol  arabelleklerini
           tasarlarken  basitlik  ve  verimliliğe  odaklanmıştır.  Dil  bağımsızdır  ve  herhangi  bir  dile  kolaylıkla

           entegre edilebilir. API geliştiricileri, proto dosyaları ile istemciler ve sunucular arasındaki hizmetleri
           ve  mesajları  tanımlar.  Protokol  arabellekleri  mesajlar  üzerinden  yapılandırılır.  Her  mesaj  alan  adı
           verilen bir dizi anahtar değer çifti ve alan türünü içerir.  Örnek bir proto mesajı aşağıdaki gibidir:




            message Person {
             string name = 1;
             int32 id = 2;
             bool has_ponycopter = 3;
            }



           Dosyalar, uzak hizmetlerle mesaj alışverişi yapmak için istemci ve sunucu kodu oluşturan protoc derleyici
           tarafından yüklenir. Protokol arabellekleri kullanılarak kodlanan mesajlar binary biçiminde temsil ederken,
           XML veya JSON temsillerinden çok daha küçüktür. Protokol arabellekleri insanlar tarafından okunulabilirlikten
           ödün  vererek  daha  az  CPU-yoğunluğu,  daha  az  bant  genişliğine  gereksinim  duyar.  Bu  durum  iletişim
           gecikmesinin azalmasını sağlayarak ve daha yüksek performanslı sistemler oluşmasına imkân verir. En son
           sürüm olan proto3 kullanımı daha basittir ve gRPC için en yeni yetenekleri sunar.




           1.2. Avro


           Avro, Apache Software Foundation tarafından geliştirilen bir veri serileştirme sistemi ve mesajlaşma
           formatıdır. Temel olarak, Avro verileri şemalar kullanarak temsil eder ve bu sayede verilerin taşınması
           ve paylaşılması kolaylaşır. Şema, verinin yapısını ve veri türlerini belirleyen bir JSON formatında
           tanımlanır. Avro’nun en önemli özelliklerinden biri, şemaya dayalı olmasıdır. Şema, verinin doğru bir
           şekilde seri hale getirilmesi (serialization) ve ayrıştırılması (deserialization) için gereken talimatları
           sağlar. Bu sayede, veri gönderen ve alıcı arasında tutarlılık sağlanır. Ayrıca, Avro şemaları, dinamik
           tip  kontrolü  sağlar  ve  verilerin  uyumlu  olup  olmadığını  doğrulamak  için  kullanılabilir.  Avro,  dil
           bağımsız bir mesajlaşma formatıdır. Yani, farklı programlama dillerinde kullanılabilen kod üretebilir.

           Bu özellik, farklı dillerde yazılmış sistemler arasında veri alışverişini kolaylaştırır. Bununla birlikte,
           Avro veri sıkıştırma özelliği sunar. Verilerin sıkıştırılması, ağ trafiği ve depolama maliyetini azaltır.
   134   135   136   137   138   139   140   141   142   143   144