2017-05-30 14 views
0

したがって、コンフルエントなカフカベースのエコシステムでAvroを使用して通信する予定です。 Avroの私の現在の理解は、各メッセージがそのスキーマを運ぶことです。その場合、バージョンの更新を解決するためだけにスキーマレジストリが必要ですか?スキーマを使用したAvroメッセージ

各メッセージでスキーマを運ぶと、スキーマレジストリのようにメッセージIDをスキーマにマップする必要がなくなるので、私は尋ねます。または私はここに何かを逃していますか?

答えて

1

Confluent Schema Registryを実行すると、Confluent Avro Serdesライブラリで公開されたKafkaメッセージには、avroスキーマが含まれません。コンシューマデシリアライザがコンフルエントスキーマレジストリからスキーマをフェッチするために使用する数字のスキーマIDのみが含まれています。これらのスキーマは、パフォーマンスの最適化としてシリアライザとデシリアライザによってキャッシュされます。

+0

ありがとう---そうでないスキーマレジストリベースのメッセージは、開始時にスキーマを持ちますか?受信者が未知のTLVのようなデータのコードをどのように書くことができるかは、私が分かっている質問とは別のものです。 – intiha

+0

Avroシリアル化されたメッセージは、メッセージの先頭にスキーマレジストリのスキーマIDである1バイトの余分なバイトを持ち、残りのメッセージは通常のバイナリavroデータです。すべてのメッセージにavroスキーマ全体を入れるよりも、ワイヤーが非常にコンパクトで、メッセージサイズがはるかに小さくなります。 –

関連する問題