DevSprout / Practice-Kafka-Dev-To-Production

✉️ 실전 카프카 개발부터 운영까지 스터디
3 stars 0 forks source link

Chapter 10. 스키마 레지스트리 #9

Open LOG-INFO opened 1 year ago

minkukjo commented 1 year ago

끄적 끄적

1. `Avro` 프로듀서는 스키마의 유효성 여부를 체크한다. 스키마가 없다면 `Avro` 프로듀서는 스키마를 등록하고, 로컬 메모리에 캐시한다.

2. 스키마 레지스트리는 현 스키마가 저장소에 저장된 스키마와 동일한지, 바뀌었는지를 확인한다. 각 스키마는 고유 ID를 갖고 있으며 이는 순차적으로 1씩 증가하지만 연속적이진 않다.  ( 아마도 이 연속적이지 않다의 의미는, 이 스키마가 진화했을 때 연속적이지 않음을 의미하는 듯, 전체 스키마 ID가 연속적이지 않다는건 말이 안됨 )

3. 프로듀서는 스키마 전체가 아닌, 스키마 ID만 보낸다.

4. 컨슈머는 스키마 ID로 역직렬화를 사용해 카프카의 토픽에 저장된 메시지를 읽는다. 만약 컨슈머가 해당 스키마 ID를 로컬 캐시로 갖고 있지 않으면 스키마 레지스트리로부터 가져온다.
LOG-INFO commented 1 year ago

끄적끄적

궁금궁금

MinJunKweon commented 1 year ago

끄적끄적

스키마 개념과 유용성

스키마 레지스트리 개요

카프카 스키마 포맷으로 JSON 대신 Avro를 권장하는 이유

Avro 예제

{"namespace": "student.avro",
 "type": "record",
 "doc": "This is an example of Avro.",
 "name": "Student",
 "fields": [
   {"name": "name", "type": "string", "doc": "Name of the student"},
   {"name": "class", "type": "int", "doc": "Class of the student"}
 ]
}