我有一些数据和一个聚合器。在我的项目中,我正在使用Hazelcast Jet和Java。
我有两个受监视的设备(A,B)和两个监视仪表板的客户。第一个只能看到A,第二个只能看到A和B。
如果A离线,则第一个将看到0个设备,第二个将看到1个设备。
如何根据客户的可见性汇总数据?
可能我可以拥有10000台设备和1000个不同的客户可见性,因此对系统进行实时1000或更多不同的查询(聚合)可能会很繁琐。
有什么已知的模式可以解决这种情况吗?
答案 0 :(得分:1)
使用Hazelcast Jet似乎应该很简单。假设数据流中存在某种表示客户的数据字段,则可以在管道阶段将其用作groupingKey,然后在Aggregate()或rollingAggregate()管道阶段提供所需的聚合逻辑。
如果数据流中没有客户,但是有一些可以映射到客户的设备ID,则可以在分组和聚合之前在map()管道阶段完成此映射。
然后,您可以将聚合的数据消耗到客户端可以访问的任何合适的数据接收器中。可以将其写入以客户键为键的地图,或者您可以将流发布到特定于客户的主题(JMS,Kafka或类似主题)