2016-10-03 6 views
0

/consumer 메시지를 생성 할 때 Schema Registry의 추가 레이어 (일명 실패 지점)를 추가하면 어떤 이점이 있습니까? 서비스가 중단되면 메시지가 소비되거나 생성되지 않습니다. Kafka를 사용하는 시스템이 스키마 레지스트리를 사용하지 않아 오류가 발생하기 쉽지 않을까요?스키마 레지스트리 레이어를 추가하면 가중치가 증가합니까?

답변

3

아키텍처에 스키마 레지스트리가있는 핵심 포인트는 데이터 파이프 라인이 "정상 작동 중에도"작동하는지 확인하는 것입니다.

즉, 모든 시스템이 가동되어 실행중인 경우 (예 : "모든 녹색, 100 % 가동 시간!") 팀 A이 관리하는 제작자 응용 프로그램이 업데이트되어 현재 호환되지 않는 데이터를 생성하기 시작합니다 이 변경을 예상하지 못한 팀 BC에 의해 관리 된 다운 스트림 소비자에 대한 부수적 인 손상.

스키마 레지스트리를 사용할지 여부를 결정할 때 "일이 잘못되었을 때"와 같은 시나리오에 대해 스스로에게 질문하면 안됩니다 (대부분 언젠가는 발생합니다). 예를 들어 Confluent Schema Registry 고 가용성 설정과 같은 기능을 지원)뿐만 아니라 데이터 파이프 라인이 일반적으로 작동하는 데 필요한 보증에 대해서도 설명합니다.

서비스가 중단되면 메시지가 소비되거나 생성되지 않습니다.

일반적으로 예. 실제로 스키마 레지스트리 서비스의 고 가용성 모드, 스키마의 클라이언트 측 캐싱 등과 같은 기능은 그러한 손상을 최소화하는 데 도움이됩니다.

카프카를 사용하는 시스템은 하나의 오류 지점이 적은 스키마 레지스트리를 사용하지 않으므로 오류가 발생하지 않을까요?

일반적으로 체인에서 또 다른 장애 지점이 될 수있는 구성 요소를 사용하지 않는 것이 좋습니다.

프로덕션 환경에서 특히 대규모 조직에서 데이터 파이프 라인을 실행하는 경우 스키마 레지스트리는 작성된 데이터도 항상 읽을 수 있도록함으로써 "실패 지점"을 제거하는 데 도움이됩니다. "데이터 변경"에 의해 촉발 된 실패는 적어도 하나 이상의 시스템을 사용할 수 없게되면서 실패로 이어질 수 있다고 주장 할 수 있습니다.

2

스키마 레지스트리는 highly available으로 구성 될 수 있으므로 단일 실패 지점이 아닙니다.

즉, 스키마 레지스트리와 함께 제공되는 편리함 및 스키마 호환성 규칙을 원한다면 사용하고 싶습니다. Kafka 클러스터에 연결하는 모든 클라이언트가이를 사용해야하므로 동일한 클러스터의 다른 클라이언트에 영향을주지 않고 사용해 볼 수 있습니다.

avro 메시지에 스키마 레지스트리를 사용하는 대신 메시지 자체에 스키마를 추가 할 수 있습니다. 일부 사용자는 메시지 크기가 커지고 스키마를 체계적으로 발전시키지 않아도 괜찮습니다. 스키마 레지스트리는 그러한 것들에 관심이있는 사람들을위한 것입니다.

관련 문제