Схемы не хранятся вместе с темой, только их идентификаторы.И тема _schemas
не реплицируется, только идентификаторы хранятся в реплицированных темах.
На высоком уровне, если вы используете AvroConverter
с репликатором, он десериализует сообщение из исходного кластера, дополнительно переименовывает тему в соответствии с конфигурацией репликатора, затем сериализует сообщение и отправляетновое имя субъекта в целевой кластер + реестр.
В противном случае, если вы используете ByteArrayConverter
, он не будет проверять сообщение, а просто копирует его в целевой кластер без регистрации.
Небольшой оптимизацией на пути Avro было бы только проверить, что сообщение закодировано Avro на первых 5 байтах, в соответствии со спецификацией реестра реестра, а затем выполнить HTTP-поиск исходного объекта с помощью API-интерфейса реестра реестра.GET /schemas/ids/:id
, снова переименуйте раздел, если необходимо, в целевой кластер, и POST
схему там.Подобный подход может работать в любой паре Потребитель / Производитель, такой как реализация MirrorMaker MessageHandler
.