我有一些数据和一个聚合器。在我的项目中,我使用的是 Hazelcast Jet 和 Java。
我有两个设备(A、B)受到监控,还有两个客户在看仪表板。第一个只能看到 A,第二个可以看到 A 和 B。
如果 A 离线,第一个将看到 0 个设备打开,第二个将看到 1 个设备打开。
我如何根据客户可见性汇总数据?
我可能有 10000 台设备和 1000 个不同的客户可见性,因此实时执行 1000 个或更多不同的查询(聚合)对系统来说可能很繁重。
是否有任何已知的模式来处理这种情况?
最佳答案
使用 Hazelcast Jet 似乎应该相当简单。假设数据流中有某种代表客户的数据字段,您可以将其用作管道阶段中的 groupingKey,然后在 aggregate() 或 rollingAggregate() 管道阶段中提供所需的聚合逻辑。
如果数据流中没有客户,但有一些可以映射到客户的设备 ID,则可以在分组和聚合之前的 map() 管道阶段完成此映射。
然后,您可以将聚合数据排放到客户端可以访问的任何合适的数据接收器。它可以写入由客户 key 键控的 map ,或者您可以将流发布到特定于客户的主题(JMS、Kafka 或类似主题)
关于javascript - 具有约束的数据动态聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55008106/