【发布时间】:2014-09-16 15:56:25
【问题描述】:
我必须建立一个运动检测服务。运动检测不适用于视频,而仅适用于静止图像。
此微服务需要能够接收乱序图像(带有时间戳)并确定图像是否与之前拍摄的图像不同(带有早于它的时间戳)。需要有多个运动检测工作人员。
因此,关键要求似乎是:
- Web 服务可以无序地接收图像,能够将它们分组为前一对和下一对,然后计算图像与其前一个图像相比是否具有运动。
- 许多图像制作者 - 整个过程似乎平均每秒大约 100 张图像
- 许多运动检测消费者
- 延迟优先于吞吐量。
- 不容易独立消耗的任务。
我正在考虑使用单个消息队列。生产者将图像文档推送到队列中。然后,运动检测工作人员从该队列中读取数据,并将“diff_percentage”字段添加到该文档,并更新数据库中的该记录。
给定队列中的任务,工作人员可以单独操作该任务,方法是直接从数据库中获取它之前的图像,并比较它,然后更新数据库中的记录。不幸的是,虽然这样可以很好地工作,但速度会非常慢。我想我需要减少从数据库中读取。理想情况下,我希望这个“队列”能够缓冲,直到它拥有给定工作所需的图像。比如......当一个工作人员从队列中读取数据时,检查它需要比较的图像是否在队列中,如果没有,则转到数据库。
谁能指出我正确的方向?也许队列不是我想要的?也许是一个队列,或者某种缓存桶?
【问题讨论】:
-
如前所述,这个问题对于有用的答案来说似乎有点过于宽泛。这是网络服务还是本地系统服务? “许多”是多少(100、100K、100M)?您想优先考虑吞吐量还是延迟?降低计算成本或存储成本?这些都是可能决定解决问题的可行方法和不可行方法的所有因素。
-
公平点 MooseBoys。我会尝试添加更多细节
-
我不清楚问题是什么。您当前的方法是否太慢了?
-
如果您想确信my answer 来自可靠或官方来源:我的硕士论文是关于网络通信的,我对数据流编程非常感兴趣。
标签: architecture message-queue motion-detection