我真的是暴风雨新手。我有一个非常相似的要求,
可以说,我有一个像任何电子商务网站一样的出价系统,在该系统中我们可以对任何产品进行出价。我得到一个负载,可以说每秒100万个请求。现在,我需要实时获取两个统计信息,并将其显示在用户界面中。
所有这些统计信息都必须是实时且一致的。因此,我希望风暴能够解决它。 据我了解,我们可以使用像kafka这样的消息传递队列将收到的出价存储为日志。然后,某些用户群可以选择它们并将其保留在任何数据库中。 但是我需要知道风暴如何利用螺栓进行聚合,并找到我的前十个窗口并实时更新,以便可以将其拾取并显示在UI中。
我最初的努力就像
Kafka-> BiddingSpout->螺栓(根据当前前十名进行过滤)->螺栓->更新结果
Kafka-> BiddingSpout->螺栓(计数器)->螺栓->更新结果
但是我不太明白,螺栓将如何基于当前排名前十的结果进行过滤。
答案 0 :(得分:0)
我认为您需要一种可以由螺栓实例共享的持久层(缓存或数据库)。您的一个螺栓(计数器)将继续更新该持久层中特定出价ID的计数,您需要执行一次原子操作来读取和递增(类似redis cache已预定义)。在出价时间结束时,您不应再收到任何消息,并且不应对该出价ID进行更多计数。 (过滤器)应轮询持久层的出价时间,并且一旦超出出价时间,您就应该获得计数并在需要显示的地方更新结果。