Apache kafka Kafka Streams State Stores是否是处理大量密钥和数据的有状态应用程序的有效解决方案?
我试图确定Kafka Streams state stores是否适合解决此问题:Apache kafka Kafka Streams State Stores是否是处理大量密钥和数据的有状态应用程序的有效解决方案?,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我试图确定Kafka Streams state stores是否适合解决此问题: 一个主题将接收超过20000个不同键的数据 对于流中的每个密钥,我需要在状态存储中保留12个条目,每年每月一个,例如密钥1: 对于20k个键,我将在状态存储中保留240k个键值对。我知道我可以水平扩展Kafka Streams应用程序来分发信息,但是: 卡夫卡很适合这个问题吗 如何确定每个Kafka Streams实例所需的RAM内存量 如何确定每个Kafka Streams实例RocksDB所需的磁盘空间
- 一个主题将接收超过20000个不同键的数据
- 对于流中的每个密钥,我需要在状态存储中保留12个条目,每年每月一个,例如密钥1:
- 卡夫卡很适合这个问题吗
- 如何确定每个Kafka Streams实例所需的RAM内存量
- 如何确定每个Kafka Streams实例RocksDB所需的磁盘空间量
- 是否有任何指导原则来确定处理此负载的大量副本
副本是可用性的一个因素,不一定是负载。。。从3-5个副本开始Redis或其他数据库有什么问题?您可以配置RocksDB将使用多少内存。本指南可能会有所帮助:好的,显然需要交互式查询,但如果您同时访问多个键、所有键或一次只访问一个键,则这并不能解决问题。Kafka可以存储数年的数据,假设您像任何其他服务器一样适当地监控磁盘使用情况。当然,复制可能会导致负载,但这不是主要的驱动因素,因为其他所有主题都有可能被复制。我可能需要获得年度结果,所以12个关键点。kstreams应用程序正在Kubernetes上运行,正如您所指出的,rocksdb在磁盘中而不是内存中,默认容器存储是否足够,或者是否需要以某种方式进行配置?您必须使用PVC,这样您就不会在我的环境GKE中使用“默认容器存储”Mmm,这是一个问题,因为pvc只能作为ReadWriteOnce安装。也就是说,所有副本都将共享一个卷,所有副本都无法在该卷上写入。由于rocksdb数据不需要持久化(它将由更改日志主题重新创建),因此我希望依赖默认容器磁盘空间。。。
--------------------------------------------------------
|STATE STORE KEY (key + year-month) | STATE STORE VALUE|
--------------------------------------------------------
| 1-2020-02 | 100.19 |
| 1-2020-01 | 12.0 |
| 1-2019-12 | 19.0 |
| ... | ... |
| 1-2019-03 | 1.0 |
--------------------------------------------------------