我正在尝试构建一个实时成就处理器,例如:
每次线程中有新参与者时,向最后 3 个参与者发送通知
每天按类型对事件流通知进行分组和聚合
事件流处理的这种描述似乎很适合我的需要 https://en.wikipedia.org/wiki/Event_stream_processing
如果用例只是从单个事件更新或触发,我可以使用来自 amazon 或 azure 的众多云队列或发布者服务之一,例如 Kinesis 或 SQS,并使用 AWS lambda 函数来处理来自队列。 Azure 似乎提供了一种称为“事件中心”的东西,可以充当数据流广播器。本质上,拥有一个所有操作/事件的云队列和多个通知处理器作为事件流的订阅者,逻辑触发器和聚合以及成就奖励封装在每个成就处理器中。
但是,由于我需要通过一些任意规则对项目进行分组(每个成就可以有许多分组参数),所以我不能只简单地查看操作队列中的最新事件来实时处理每个成就。我是否必须在内存中保留一组才能提高效率?另一种方法是让每个成就处理器对每个事件进行数据库查找(例如,选择当天与此类型匹配的所有事件),但我担心如果这样做,性能不会很高。我听说过诸如 Spark Streaming 和 Snowplow 之类的东西,所以我想知道 AWS 或 Azure 云服务上是否有一种模式和产品可以用于以非常可扩展且简单的方式解决这个问题 - 并且azure 和 aws(事件中心和 kinesis)上的现有数据流服务是否适合此数据聚合用例。
最佳答案
关于azure - 利用云服务对某个时间窗口内的实时统计数据进行聚合和分组,以触发通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433276/