首页 > 解决方案 > 有约束的数据动态聚合

问题描述

我有一些数据和一个聚合器。在我的项目中,我使用 Hazelcast Jet 和 Java。

我有两个设备(A、B)被监控,两个客户在看仪表板。第一个只能看到 A,第二个可以看到 A 和 B。

如果 A 离线,第一个将看到 0 个设备开启,第二个将看到 1 个设备开启。

如何根据客户可见性聚合数据?

我可能有 10000 台设备和 1000 个不同的客户可见性,因此实时执行 1000 个或更多不同的查询(聚合)可能会对系统造成负担。

是否有任何已知的模式来管理这种情况?

标签: javascriptjavaalgorithmdesign-patternshazelcast

解决方案


这似乎使用 Hazelcast Jet 应该相当简单。假设数据流中有代表客户的某种数据字段,您可以在管道阶段将其用作 groupingKey,然后在 aggregate() 或 rollingAggregate() 管道阶段提供所需的聚合逻辑。

如果数据流中没有客户,但有一些可以映射到客户的设备 ID,则可以在分组和聚合之前的 map() 管道阶段完成此映射。

然后,您可以将聚合数据排放到客户端可以访问它的任何合适的数据接收器。可以将其写入由客户密钥键入的映射,或者您可以将流发布到特定于客户端的主题(JMS、Kafka 或类似主题)


推荐阅读