javascript - 具有约束的数据动态聚合

标签 javascript java algorithm design-patterns hazelcast

我有一些数据和一个聚合器。在我的项目中,我使用的是 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/

相关文章:

javascript - 主干 View 作为无序或有序 html 列表的一部分

javascript - Greasemonkey:为什么这个 if 语句总是返回 true?

java - 使用 UTF-8 URL 调用 nominatim.openstreetmap OSM

algorithm - 我怎样才能公平地从列表中选择一个项目?

algorithm - 近似算法-使用期望

python - 查找总和最接近给定数字的二维数组的路径

javascript - 如何在 NodeJS 中同时更改对象(在相同的库中但不同的路径)

由于 dom 已更改,Javascript 失败?

Java - 从MySQL获取乱码结果(列表)

java - 序列化对象被覆盖,而不是添加到