Слишком много схем, созданных с использованием Debezium mongodb CDC с сериализацией Avro - PullRequest
0 голосов
/ 18 февраля 2019

Я использую соединитель Debezium mongodb для потоковой передачи изменений из коллекции 30GB в mongo.

это моя конфигурация:

"config": {
    "connector.class" : "io.debezium.connector.mongodb.MongoDbConnector",
    "tasks.max" : "1",
    "mongodb.hosts" : "",
    "mongodb.name" : "",
    "mongodb.user" : "",
    "mongodb.password" : "",
    "database.whitelist" : "mydb",
    "collection.whitelist" : "mydb.activity",
    "database.history.kafka.bootstrap.servers" : "kafka:9092",
    "transforms": "unwrap",
    "transforms.unwrap.type" : "io.debezium.connector.mongodb.transforms.UnwrapFromMongoDbEnvelope",
    "key.converter" : "io.confluent.connect.avro.AvroConverter",
    "key.converter.schema.registry.url" : "http://schema-registry:8081",
    "value.converter" : "io.confluent.connect.avro.AvroConverter",
    "value.converter.schema.registry.url" : "http://schema-registry:8081",
    "internal.key.converter" : "org.apache.kafka.connect.json.JsonConverter",
    "internal.value.converter"  : "org.apache.kafka.connect.json.JsonConverter",
    "schema.compatibility" : "NONE"
}

Сначала я получил "Слишком много схем"создан для темы ", поэтому я добавил

"value.converter.max.schemas.per.subject" : "100000"

, теперь kafka-connect резко замедляется после того, как в схеме-реестре создано много схем для значения темы.

Я использую эту темув приложении kafka-streams перемещение SMT в приемник невозможно (отсутствует соединитель приемника)

Схема изменяется между элементами сбора, но не более 500 раз и также обратно совместима, поэтомуя не понимаю, почему создается так много схем.

любой совет поможет

1 Ответ

0 голосов
/ 11 марта 2019

В итоге я написал SMT, который хранит схему в кеше, для достижения 2 целей: 1. поддерживать порядок полей.2. иметь все поля как необязательные в каждой схеме записи.

Таким образом, схема развивается до тех пор, пока не содержит все параметры полей, и затем больше не изменяется, если не добавлено новое поле.

...