13 puan yazan xguru 2025-01-20 | 4 yorum | WhatsApp'ta paylaş
  • Verimli bir ikili serileştirme formatı
  • JSON gibi farklı diller arasında veri alışverişi yapılmasını sağlar
  • Küçük tamsayılar tek bayt olarak kodlanır, kısa dizeler ise dizenin kendisine ek olarak yalnızca bir bayt daha gerektirir
  • 50'den fazla programlama dili ve ortamında desteklenir
  • Kullanım örnekleri:
    • Redis: Lua için MessagePack C eklentisi ekleyerek veri serileştirmede kullanır
    • Fluentd: Dahili veri gösteriminde MessagePack kullanır, böylece yüksek hızlı işleme mümkündür
    • Treasure Data: Analitik sorgular için optimize edilmiş çok kiracılı bir veritabanı oluşturdu
    • Pinterest: MessagePack ve Memcache ile feed cache sıkıştırma ve hızlı işleme sağlar

İki konsept: "Type System" ve "Format"

  • Tip sistemi
    • Integer: tamsayı
    • Nil: null değeri
    • Boolean: true veya false
    • Float: IEEE 754 kayan nokta
    • Raw: dize veya bayt dizisi
    • Array: nesne dizisi
    • Map: anahtar-değer çifti
    • Extension: kullanıcı tanımlı tip
      • Timestamp: zaman bilgisi
  • Format
    • positive fixint, negative fixint, fixmap, fixarray
    • nil, false, true
    • bin 8/16/32, ext 8/16/32, float 32/64
    • uint 8/16/32/64, int 8/16/32/64, fixext 1/2/4/8/16, str 8/16/32
    • array 16/32, map 16/32
    • Format örnekleri
      • fixint: 7 bit tamsayı (pozitif için 0x00–0x7F, negatif için 0xE0–0xFF)
      • fixstr: en fazla 31 baytlık dize
      • array 16: en fazla (2^16)-1 öğe içeren dizi
      • map 16: en fazla (2^16)-1 anahtar-değer çifti

MessagePack'in avantajları

  • Veri boyutunu en aza indirir ve hızı optimize eder
  • Mevcut JSON tabanlı uygulamaların yerine geçebilir ve onları iyileştirebilir
  • Basit uygulaması sayesinde farklı ortamlarda esnek biçimde kullanılabilir

4 yorum

 
wedding 2025-01-21

Oyun sunucusuyla iletişim kurarken MessagePack uygulamaya çalıştım ama... anlatıldığı gibi çeşitli ortamlarda esneklik sağlamak pek iyi olmadı. Bu yüzden protobuf kullandım.

 
ifmkl 2025-01-20

Ben pek iyi bilmiyor olabilirim ama... boyut ve hız için JSON yerine hex olarak serileştirecekseniz... bunun eskiden doğrudan ikili serileştirme kullanıldığındaki durumdan farkı tam olarak ne?

 
cichol 2025-01-20

Sadece binary olarak çıkarırsanız bu, onu üreten dil ve runtime içinde ancak geçerli olur; ama bu tür formatlar genelde farklı diller ve farklı ortamlar arasında alışveriş yapılacağı varsayımıyla tasarlanır.

 
ifmkl 2025-01-21

Anladım. Öyleymiş. Cevabınız için teşekkürler.