MessagePack Ayrıştırıcı
MessagePack, JSON'a benzer ancak daha küçük ve hızlı olan verimli bir ikili serileştirme formatıdır. Redis, Fluentd ve birçok RPC sisteminde kullanılır. Bu araç, MessagePack dosyalarını ayrıştırır ve içerikleri türler ve boyutlar hakkında meta verilerle birlikte JSON olarak görüntüler.
Spesifikasyonlar
Yaygin Kullanim Alanlari
- MessagePack ile kodlanmış API yanıtlarını hata ayıklama
- MessagePack ile serileştirilmiş Redis önbellek verilerini inceleme
- Fluentd günlük mesajlarını analiz etme
- Günlükleme veya hata ayıklama için MessagePack'i JSON'a dönüştürme
- MessagePack formatındaki RPC yüklerini anlama
Ozellikler
- Sürükle-bırak veya dosya seçimi ile MessagePack ikili dosyalarını ayrıştırma
- Onaltılık kodlanmış MessagePack verilerini çözme
- Uzantı türleri dahil tüm MessagePack türlerini destekleme
- Okunabilirlik için JSON'a dönüştürme
- Belge meta verilerini gösterme (boyut, tür sayıları, maksimum derinlik)
- Uzantı türü bilgilerini görüntüleme
- İkili veri ve zaman damgalarını işleme
- Ham ikili inceleme için Hex görüntüleyici
Ornekler
Basit MessagePack
Deneyin →İki alanlı bir MessagePack eşlemesi: {"hello":"world","count":42}
82 a5 68 65 6c 6c 6f a5 77 6f 72 6c 64 a5 63 6f 75 6e 74 2aOnaltılık Kodlanmış MessagePack
Deneyin →Dize, sayı ve mantıksal değer içeren bir MessagePack eşlemesi: {"name":"Alice","age":30,"active":true}
83 a4 6e 61 6d 65 a5 41 6c 69 63 65 a3 61 67 65 1e a6 61 63 74 69 76 65 c3Ipuclari
- Onaltılık kodlanmış MessagePack verilerini doğrudan yapıştırarak ayrıştırabilirsiniz.
- MessagePack tipik olarak eşdeğer JSON'un %50-80'i boyutundadır.
- Uzantı türleri (negatif tür kodları) uygulama tarafından tanımlanır.
- Zaman damgaları çeşitli hassasiyet formatlarıyla uzantı türü -1 kullanır.
- Bazı uygulamalar zaman damgaları için uzantı türü 1 kullanır.
Anlama MessagePack Ayrıştırıcı
MessagePack, JSON benzeri veri modeli uyumluluğunu korurken mümkün olduğunca kompakt olmayı hedefleyen bir ikili serileştirme formatıdır. Sadayuki Furuhashi tarafından oluşturulan MessagePack, harici bir şema olmadan verimli ayrıştırmaya olanak tanıyan, kendi kendini tanımlayan bir ikili formatta verileri kodlar.
Format, değişken uzunluklu bir kodlama şeması kullanır. Küçük tam sayılar (0-127) tek bir bayta sığar. Kısa dizeler, uzunluklarını tür baytının kendisinde içerir. Eşlemeler ve diziler kompakt uzunluk ön ekleri kullanır. Bu tasarım, tipik olarak eşdeğer JSON'un %50-80'i boyutunda yükler üretir ve metin ayrıştırma yükü olmadığından serileştirme ve seri kaldırma önemli ölçüde daha hızlıdır.
MessagePack; nil, mantıksal, tam sayı (64 bite kadar işaretli ve işaretsiz), kayan noktalı sayı (32 ve 64 bit), dize, ikili, dizi, eşleme ve uzantı türlerini destekler. Uzantı türleri, uygulamaların özel türler tanımlamasına olanak tanır - zaman damgası uzantısı (tür -1) tek standartlaştırılmış uzantıdır. Neredeyse her programlama dili için tutarlı çapraz dil uyumluluğuna sahip kütüphaneler mevcuttur.
MessagePack; Redis'te (isteğe bağlı serileştirme formatı olarak), Fluentd'de (günlük iletme), SignalR'de (gerçek zamanlı web) ve bant genişliği ile ayrıştırma hızının önemli olduğu birçok RPC sistemi ve oyun ağ protokolünde kullanılır. JSON uyumluluğu istendiğinde ancak metin serileştirme yükünün çok yüksek olduğu durumlarda iyi bir seçimdir.
MessagePack, bant genişliği veya ayrıştırma hızının kritik olduğu senaryolar için en uygundur: gerçek zamanlı iletişim, yüksek verimli API'ler, oyun ağları, IoT cihazları ve önbellek katmanları. İnsan tarafından okunabilirliğin önemli olduğu durumlarda, yapılandırma dosyaları için veya metin tabanlı formatlar bekleyen sistemlerle birlikte çalışırken JSON daha iyi bir seçimdir.
Protocol Buffers ile karşılaştırıldığında, MessagePack JSON gibi şemasızdır - veriler kendi kendini tanımlar ve önceden tanımlanmış bir şema olmadan serileştirilebilir. Protocol Buffers, dile özgü koda derlenen bir .proto şema dosyası gerektirir ancak daha küçük yükler üretir ve daha güçlü tür güvenliği sağlar. MessagePack, şemasız dinamik veriler için daha uygunken, Protobuf maksimum verimliliğin gerekli olduğu iyi tanımlanmış API sözleşmeleri için üstündür.
Uzantı türleri, uygulamaların yerleşik kümenin ötesinde özel veri türleri tanımlamasına olanak tanır. Her uzantının bir tür kodu (-128 ile 127 arası) ve rastgele ikili verileri vardır. Zaman damgası uzantısı (tür -1), tek standartlaştırılmış uzantıdır ve nanosaniye hassasiyetinde zaman damgalarını temsil eder. Uygulamalar UUID, BigDecimal veya etki alanına özgü nesneler gibi türler için kendi uzantılarını tanımlayabilir.