Abh*_*hek 5 apache-kafka apache-kafka-streams
我们面临一个问题,我们正在使用 kafka 持久状态存储,并且它经常耗尽空间(8GB),因此我们正在考虑迁移到内存状态存储
Stores.persistenKeyValueStore(“名称”);
到
Stores.inMemoryKeyValueStore(“名称”);
如果我们更改为内存,则有几个问题
切换到内存中还有其他缺点吗?
请注意,我们有流应用程序 (KTable) 并拥有大约 200 万条唯一消息。
每个消息的大小约为 2kb 频率 平均 500 消息/秒
空间不足(8GB),因此我们正在考虑转移到内存状态存储
切换到内存存储似乎是一种倒退?8GB也比较小——为什么你有这么小的磁盘?
如果经纪人/消费者重新启动,我们会丢失任何数据吗?
不。持久存储只是对增加启动时间和保存更大状态的能力(因为它们可能溢出到磁盘)的优化。持久存储和内存存储都由 Kafka 集群中的变更日志主题支持,以实现容错。为了获得适当的容错能力,您需要在 Kafka Streams 上应用相同的配置以及独立于存储类型的变更日志主题。
如果内存中的旧数据被刷新,消费者如何获取以前的数据,它是否从代理获取该数据?
如果您使用内存存储,客户端始终保留数据集的完整副本。因此,您的数据集必须适合主内存。对 Kafka 集群的写入仅用于容错。在正常操作期间,Kafka Streams 仅写入变更日志主题。仅当迁移任务并且需要重建存储时才会读取更改日志主题。
切换到内存中还有其他缺点吗?
如前所述,缺点是: - 您丢失了滚动重启的本地状态,并且需要从更改日志主题恢复状态,从而增加了启动时间 - 您的状态必须适合主内存
归档时间: |
|
查看次数: |
5097 次 |
最近记录: |