TIL

10.3 스키마 레지스트리 실습

10.3.1 스키마 레지스트리와 클라이언트 동작

Image

  1. 에이브로 프로듀서는 스키마 레지스트리의 스키마 유효성 여부를 확인한다.
    1. io.confluent.kafka.serializers.KafkaAvroSerializer 사용
    2. 스키마가 확인되지 않으면 스키마를 등록, 캐시
  2. 스키마 레지스트리는 현 스키마가 저장소에 저장된 스키마와 동일한 것인지, 진화한 것인지 확인한다.
    1. 스키마에 문제가 없다면 프로듀서에 고유 ID를 응답
    2. 고유 ID는 스키마에 할당되는, 순차 증가하는 값이다.
  3. 프로듀서는 스키마 레지스트리로부터 받은 스키마 ID를 참고해 메시지를 카프카에 전송한다.
    1. 이 때 스키마 전체 내용이 아닌 오로지 메시지와 ID만 전송한다.
    2. JSON은 키:벨류 전체를 전송해야 하지만 에이브로 덕에 스키마 ID와 벨류만 보낼 수 있어 효율적이다.
  4. 에이브로 컨슈머는 카프카 토픽에 저장된 메시지를 읽는다.
    1. io.confluent.kafka.serializers.KafkaAvroDeserializer 역직렬화 사용
    2. 이 때 스키마 ID가 없다면 컨슈머는 스키마 레지스트리로부터 가져온다.