使用 Debezium mongodb CDC 和 Avro 序列化创建的模式过多
Too many schemas created using Debezium mongodb CDC with Avro serializing
我正在使用 Debezium mongodb 连接器流式传输 mongo 中 30GB 集合的更改。
这是我的配置:
"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"
}
起初,我有一个 "Too many schemas created for subject",所以我添加了
"value.converter.max.schemas.per.subject" : "100000"
现在,在模式注册表中为主题值创建了许多模式后,kafka-connect 的速度会急剧下降。
我在 kafka-streams 应用程序中使用了这个主题,因此无法将 SMT 移动到接收器(没有接收器连接器)
架构在集合项之间更改但不超过 500 次并且还向后兼容,所以我不明白为什么要创建这么多架构。
任何建议都会有所帮助
我最终编写了一个将模式保存在缓存中的 SMT,以实现 2 个目标:
1.保持字段的顺序。
2. 在每个记录模式中将所有字段设为可选。
通过这种方式,架构会演进,直到它包含字段的所有选项,然后不再更改,除非添加新字段。
我正在使用 Debezium mongodb 连接器流式传输 mongo 中 30GB 集合的更改。
这是我的配置:
"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"
}
起初,我有一个 "Too many schemas created for subject",所以我添加了
"value.converter.max.schemas.per.subject" : "100000"
现在,在模式注册表中为主题值创建了许多模式后,kafka-connect 的速度会急剧下降。
我在 kafka-streams 应用程序中使用了这个主题,因此无法将 SMT 移动到接收器(没有接收器连接器)
架构在集合项之间更改但不超过 500 次并且还向后兼容,所以我不明白为什么要创建这么多架构。
任何建议都会有所帮助
我最终编写了一个将模式保存在缓存中的 SMT,以实现 2 个目标: 1.保持字段的顺序。 2. 在每个记录模式中将所有字段设为可选。
通过这种方式,架构会演进,直到它包含字段的所有选项,然后不再更改,除非添加新字段。