我目前正在研究Avro模式系统,据我了解,模式更新的流程是:
1)客户端更改架构(可能通过向后兼容添加默认值的新字段),并将数据发送给使用更新后的架构序列化的Kafka。
2)架构注册表会进行兼容性检查,并使用新版本和唯一ID注册新版本的架构。
3)使用者(仍然使用旧架构)尝试对数据进行反序列化,而架构演进会丢弃新字段,从而允许使用者对数据进行反序列化。
据我了解,我们需要显式更新 架构更改后的使用者,以便向他们提供最新的架构。 但是,为什么消费者在看到ID更改后才拉最新的架构?
答案 0 :(得分:2)
如果使用者模式使用的是SpecificRecord子类,则需要更新它们。这实际上是在跳过模式ID查找
如果您希望它始终与最新版本匹配,则可以对/ latest进行注册表的http调用并获取它,然后重新启动应用程序。
或者,如果您始终希望使用者使用消息的ID,请使用// Sass configuration
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('*.scss')
.pipe(sass())
.pipe(gulp.dest(function (f) {
return f.base;
}))
});
gulp.task('clean', function() {
})
gulp.task('watch', function() {
gulp.watch('*.scss', ['sass']);
})
gulp.task('default', function(done) { //<---- Insert 'done' as a parameter here...
gulp.series('clean','sass', 'watch')
done(); //<---- ...and call it here
})
作为对象类型