我有前端与Play框架上编写的后端进行通信,我的目标是对本网站上的用户活动进行分析,例如特定时间内的用户活动统计,按用户性别划分的操作,不同国家的活动统计等。我想用Play framework
在后端收集这些数据并将其发送到Kafka
,其中Spark streaming will ingest
这些数据进行聚合并将分析写入数据库。
我对下一刻有疑问:
- Play 框架是否可以是将数据发送到
Kafka
的合适位置(例如,通过带有Akka streams
等的单独控制器),或者我必须为此目的使用其他东西而不是Play
? - 触发用户活动
producing to Kafka
的最佳事件是什么 - 例如,用户执行了某些操作并立即将数据发送到 Kafka,或者将此数据收集到内存中并在阈值受限时发送。
p.s. 每小时将触发一次带有Spark streaming
的事件,streaming
将使用来自Kafka
的数据并将其写入数据库。我怀疑最好的解决方案是简单地在数据到达时消耗数据。如果我的这种方法有误,请纠正我。
Spark 流事件将每小时触发一次,流将使用来自 Kafka 的数据并将其写入数据库。我怀疑最好的解决方案是简单地在数据到达时消耗数据。如果我的这种方法有误,请纠正我。
[A] 这取决于您的业务需求。如果您想要近乎实时的洞察力,那么您需要在数据到达时使用数据,而不是在一小时的批处理中使用
数据。 Play框架是否可以是将数据发送到 Kafka 的合适位置(例如,通过带有 Akka 流的单独控制器等),或者我必须为此目的使用其他东西来代替 Play?
[A] 我强烈建议使用 Kafka Streams 代替 Spark,因为你使用的是 Java。我对游戏的了解不够,无法对此发表评论
在用户活动上触发向 Kafka 生成的最佳事件是什么 - 例如,用户执行了特定操作并立即将数据发送到 Kafka 或将此数据收集到内存中并在阈值有限时发送。
[A] 为了避免影响应用程序本身,向 Kafka 发送消息应该以异步方式完成
。