Skip to main content

> şema_kayıt_defteri_uyumluluk_kuralları_(avro_ve_protobuf)

Şema Kayıt Defteri Uyumluluk Kuralları (Avro ve Protobuf)

Yüksek verimli canlı mimarilerde Şema Kayıt Defteri Uyumluluk Kuralları (Avro ve Protobuf) yapısını nasıl doğru kurar ve yönetirsiniz?

ÖZET VE TEKNİK CEVAP

Şema Kayıt Defterleri (Schema Registry), Avro ve Protobuf şemaları üzerinde katı uyumluluk kuralları (Geriye, İleriye, Tam) uygulayarak olay akışlarında (Kafka) kırıcı değişikliklerin alt tüketicileri çökertmesini engeller.

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

Asenkron olay güdümlü sistemlerde üreticiler ve tüketiciler bağımsız zamanlarda canlıya çıkar. Bir üretici varsayılan değeri olmayan zorunlu bir alan eklerse veya mevcut bir alanı silerse tüketiciler serileştirme hatasıyla anında çöker. Merkezi Şema Kayıt Defteri (Schema Registry) bir kontrol kapısı görevi görerek üreticilerin şema değişikliklerini geçmiş sürümlere karşı doğrulamasını zorunlu kılar.

2. Doğru Kullanım Senaryosu

Şema Kayıt Defteri Uyumluluğu, veri sözleşmelerinin (Avro / Protobuf) üreticiler ve tüketiciler arasında serileştirme güvenliğini bozmadan zaman içinde nasıl evrilebileceğini yöneten resmi kurallar bütünüdür.

3. Prodüksiyon Arıza Modları

Geriye dönük uyumlu bir konuda mevcut Avro şemasına varsayılan değeri olmayan zorunlu bir alan eklemek. Aynı şema konusu içinde bir alanın veri tipini (sayıdan metne) değiştirmek. Refactoring sırasında Protocol Buffers alan etiket numaralarını değiştirmek.

4. Teşhis ve Telemetri Sinyalleri

üreticinin varsayılan değeri olmayan yeni Avro alanı ekleyip tüm alt tüketicileri çökertmesi, Protobuf alan etiket numarasının değiştirilip sessiz veri bozulması yaratması, kayıtsız JSON şemasının analitik boru hatlarını kırması

5. Önleme ve Mimari Bariyerler

CI sürecinde Confluent Schema Registry eklentisiyle `FULL` veya `BACKWARD_TRANSITIVE` uyumluluğunu zorunlu kılın. Canlı şemaya eklenen her yeni alana mutlaka açık bir varsayılan değer (`default: null`) atayın. Protobuf'ta silinen alan numaralarını `reserved 3, 5;` ile rezerve ederek gelecekte tekrar kullanılmasını engelleyin.

6. Mimari Ödünleşimler (Trade-offs)

Otomatik şema uyumluluk yönetişimi olmadan, tek bir üst servisin yaptığı belgelenmemiş bir olay şeması değişikliği yüzlerce alt tüketici boru hattını sessizce bozar veya çökertir.

Vaka İncelemesi (TinyCTO Örneği)

Olay akışı mimarisinde dört temel uyumluluk modunu bilmek şarttır: 1. **BACKWARD (Önce tüketiciler güncellenir):** YENİ şemaya sahip tüketiciler ESKİ şemayla yazılmış olayları okuyabilir. *Kurallar:* Alan silebilir veya varsayılan değere sahip opsiyonel alan ekleyebilirsiniz. 2. **FORWARD (Önce üreticiler güncellenir):** ESKİ şemaya sahip tüketiciler YENİ şemayla yazılmış olayları okuyabilir. *Kurallar:* Yeni alan ekleyebilir veya opsiyonel alanları silebilirsiniz. 3. **FULL (İstenen sırada güncelleme):** Hem geriye hem ileriye uyumludur. *Kurallar:* Yalnızca varsayılan değeri olan opsiyonel alanlar eklenebilir veya silinebilir. 4. **Protobuf Kuralları:** Mevcut bir alanın etiket numarasını asla değiştirmeyin (`string user_id = 1;`). Numarayı değiştirmek tel formatını bozar ve veriyi yanlış alanlara eşler.

İnteraktif Konsept Alıştırmaları

2 Alıştırma
Q1

Bir Schema Registry'de GERİYE DÖNÜK (BACKWARD) uyumluluk ne anlama gelir?

YENİ şemayı kullanan bir tüketici, ESKİ şemayla üretilmiş olayları güvenle okuyabilir ve ayrıştırabilir.
Q2

Bir Protobuf alan etiket numarasını değiştirmek (`int32 age = 2;` -> `int32 age = 3;`) neden yıkıcı bir kırıcı değişikliktir?

Çünkü Protobuf tel formatında alan adlarını değil numaralarını taşır; numarayı değiştirmek tüketicinin veriyi yanlış alana yazmasına veya düşürmesine yol açar.

Şema Kayıt Defteri Uyumluluk Kuralları (Avro ve Protobuf) — Sıkça Sorulan Sorular

Bir ekip geriye dönük uyumlu bir konuda Avro şemasına `discount_code` adında yeni bir alan ekliyor. Mevcut tüketicilerin çökmesini önlemek için şema tanımında NE bulunmalıdır?

Varsayılan bir değer (örn. `"default": null` veya `"default": ""`). Avro'da yeni tüketici bu alanın olmadığı eski olayları okurken alanı varsayılan değerle doldurur. Varsayılan değer yoksa serileştirme çöker.

Kurumsal olay akışı platformları neden Kafka üzerinden tiplenmemiş ham JSON göndermek yerine bir Schema Registry kullanır?

CI sürecinde katı sözleşme doğrulaması yapmak, kırıcı değişiklikleri engellemek ve ikili serileştirme ile paket boyutlarını %70'ten fazla küçültmek için. Şema Kayıt Defterleri, şema değişikliklerini önceden doğrulayarak canlı kesintilerini önler ve ikili kodlamayla ağ bant genişliğini ciddi oranda düşürür.

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • Şema Kayıt Defterleri (Schema Registry), Avro ve Protobuf şemaları üzerinde katı uyumluluk kuralları (Geriye, İleriye, Tam) uygulayarak olay akışlarında (Kafka) kırıcı değişikliklerin alt tüketicileri çökertmesini engeller.
  • Şema Kayıt Defteri Uyumluluğu, veri sözleşmelerinin (Avro / Protobuf) üreticiler ve tüketiciler arasında serileştirme güvenliğini bozmadan zaman içinde nasıl evrilebileceğini yöneten resmi kurallar bütünüdür.

Yaygın Yanılgılar

  • Geriye dönük uyumlu bir konuda mevcut Avro şemasına varsayılan değeri olmayan zorunlu bir alan eklemek.

Karar Kılavuzu & Önceliklendirme

Otomatik şema uyumluluk yönetişimi olmadan, tek bir üst servisin yaptığı belgelenmemiş bir olay şeması değişikliği yüzlerce alt tüketici boru hattını sessizce bozar veya çökertir.

Doğrulanmış Kaynaklar & Referanslar