Bosh sahifa Wiki Schema registry

Schema registry

Schema registry — message, event yoki API payload sxemalarini markaziy saqlash, versionlash va compatibility qoidalari bo‘yicha tekshirish xizmatidir. Producer yangi schema ro‘yxatdan o‘tkazadi, consumer esa schema ID orqali payloadni talqin qiladi. U ayniqsa Kafka kabi event streaming tizimlarida Avro, Protobuf yoki JSON Schema bilan ishlatiladi.

Subject va versiya

Schema odatda subject ostida versiyalanadi. Subject topic, record nomi yoki topic-value kombinatsiyasiga bog‘lanishi mumkin. Har yangi schema oldingi versiyalar bilan compatibility tekshiruvdan o‘tadi va muvaffaqiyatli bo‘lsa ID oladi.

Schema ID ko‘pincha wire payload headerida uzatiladi. Consumer registrdan schema’ni bir marta olib cache qiladi va binary ma’lumotni decode qiladi. To‘liq schema har message bilan yuborilmagani uchun network hajmi kamayadi.

Compatibility rejimlari

Backward compatibility yangi consumer eski data’ni o‘qiy olishini anglatadi. Forward compatibility eski consumer yangi producer yozgan data’ni o‘qiy oladi. Full ikkalasini talab qiladi. Transitive rejim faqat oxirgi versiya bilan emas, barcha oldingi versiyalar bilan moslikni tekshiradi.

Avro’da default qiymat bilan optional field qo‘shish ko‘pincha backward-compatible. Required fieldni defaultsiz qo‘shish eski data’da qiymat bo‘lmagani uchun buziladi. Fieldni o‘chirish va type almashtirish formati hamda compatibility rejimiga qarab turli oqibat beradi.

Producer va consumer oqimi

Serializer local type yoki recordni schema bo‘yicha encode qiladi. U schema registrda mavjudligini tekshiradi yoki ruxsat bo‘lsa yangi versiya yaratadi. Production producerga avtomatik istalgan schema ro‘yxatdan o‘tkazish huquqi berilmasligi mumkin; CI avval compatibilityni tekshirib deploy qiladi.

Consumer IDni olib schema’ni resolve qiladi. Registry vaqtincha ishlamasa cache’dagi IDlar o‘qilishi mumkin, yangi ID esa topilmaydi. High availability, cache va timeout data plane registryga haddan ortiq bog‘lanmasligini ta’minlaydi.

Naming va ownership

Subject naming strategy bir record turining bir nechta topicda evolyutsiyasini qanday boshqarishni belgilaydi. Topic-based strategy har topicni alohida qiladi. Record-based strategy umumiy record nomiga yagona evolution contract beradi. Noto‘g‘ri strategy mustaqil jamoalarni kutilmaganda bir compatibility zanjiriga bog‘lashi mumkin.

Schema owner, domain, description va deprecation metadata bilan boshqariladi. Field ma’nosi faqat type’dan iborat emas: birlik, timezone, PII classification va null semantikasi hujjatlashtiriladi. amount: long qiymati tiyinmi yoki so‘mmi ekanini schema type’i aytmaydi.

Xavfsizlik

Registry schema’lari ichki event tuzilishi va sensitive field nomlarini oshkor qiladi. Read va write huquqlari ajratiladi, transport TLS bilan himoyalanadi va o‘zgarish audit qilinadi. Service account faqat o‘z subjectlari uchun ro‘yxatdan o‘tkazish huquqiga ega bo‘lishi mumkin.

Schema o‘chirish ko‘pincha ikki bosqichli soft va permanent delete modeliga ega. Eski payloadlar hali saqlanayotgan bo‘lsa schema IDni permanent o‘chirish ularni decode qilib bo‘lmas holga keltiradi. Retention event va schema lifecycle bilan muvofiqlashtiriladi.

Operatsion boshqaruv

CI pull requestda yangi schema’ni registry compatibility API’siga yubormasdan tekshirishi mumkin. Canonicalization bir xil mantiqiy schema’ning format farqlarini kamaytiradi. Duplicate schema qayta ID yaratmasdan mavjud IDga moslanishi mumkin.

Monitoring request latency, cache hit, registration error va incompatible change sonini ko‘rsatadi. Registry backupida schema ID tartibi saqlanishi muhim, chunki payloadlar aynan IDga murojaat qiladi. Disaster recovery’da boshqa region bir xil ID-to-schema xaritasini tiklashi kerak.

Bog‘liq tushunchalar

Event schema, Avro, Protocol Buffers, JSON Schema, Compatibility, Serialization, Event streaming