由于不同版本的KafkaStream在使用上有较大区别,也由于KafkaStream不同版本API改动较大,以是如果版本不划一,使用方法甚至是一些核心概念都会跟本文报告有所出入,并且KafkaStream由于相对小众,文档也很少,官网的文档也只是一些简朴介绍,以是必要注意避坑
Local Store和Global Store的共同点和区别点
1、实用场景不同 Local Store 适合用于单个实例的状态管理,适合处置惩罚单个分区的数据,并且缓存数据不会多个实例共享 Global Store 实用于跨实例共享数据状态,多个实例通过Topic中的更新记录来跟新进程中的数据
2、使用方法不同 Local Store 可以直接在代码中调用对应类型存储(如:KeyValueStore)的put方法举行更新数据,不必要思量数据划一性(由于可见性只有单个实例) Global Store 不能直接调用对应的put和delete方法,所有更新和删除缓存都必要通过发送数据到Global 配置的topic中,然后自行实现Topic数据消费者(实现:org.apache.kafka.streams.processor.api.Processor类),在消费者类中举行数据更新等操作,同时由于必要本身实现更新实例中的数据逻辑,数据划一性也必要开发者自行处置惩罚,虽然正常来说使用Kafka本身的特性很少出现数据划一性问题,但是如果多实例之间性能差异和网络情况等差异,容易将数据不划一的时长延长,如果要求Store划一性强且容忍数据不划一时限短,则必要注意思量Store更新数据消费者的处置惩罚能力
3、扩展性 Local Store:可以通过增加输入主题的分区数来扩展处置惩罚能力,但每个实例仍然独立运行。 Global Store:必要在多个实例之间共享状态,因此在设计时必要思量怎样高效地管理和同步状态。
常见的Store 类型