场景:生产上有很多客服和用户的会话数据,上游系统通过 kafka 给到我们,我们会对数据做些处理便于运营人员查询会话数据。 实时性:生产 30 分钟后,运营能查询到数据即可,这应该算个准实时场景吧。 问题:其中一个就是调用机器学习模型产出一些标签,目前的处理方式是单通对话同步请求模型得到结果再持久化。算法工程师说并发高的时候离线模型压力比较大,希望数据能平稳点请求模型。 现在就是几个方案,因为上游数据是从 kafka 消费到的,要么控制好消费者的数量,每次请求都同步等待,但感觉比较挫且不易扩展。或者就是用流数据计算框架,但是没什么实战经验。想问问大家有没有什么好的方案。
1
MinQ 2020-05-05 17:26:12 +08:00
batch 呗,比如数据每 10s 且每 100 个一起输入模型
|
2
alexfarm OP @MinQ 10 秒的时间窗口不大好控制 batch size 啊。而且这个有点 spark streaming 的意思,是不是可以用这个去实现?
|
3
bigmercu 2020-05-05 21:47:29 +08:00
可以考虑使用 structured streaming,参考
https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#creating-streaming-dataframes-and-streaming-datasets Rate Source 应该可以实现控制消费数量或时间。 |
6
tairan2006 2020-05-06 00:59:50 +08:00 via Android
Spark 就行
|
7
alexfarm OP @tairan2006 就是感觉没有很多计算的工作,用 spark 有点怪怪的
|
9
MinQ 2020-05-06 11:35:15 +08:00 via Android
所以你这个是有两个模型,第一个模型会先调用第二个模型,然后等第二个模型处理完了第一个模型才能得到输入所需要的数据?
|
13
owenliang 2020-05-06 16:49:58 +08:00
flink,window 。
|