3

我有 100 多个视频流频道可以同时处理。我需要捕捉视频,生成缩略图,并将它们作为 Web 服务提供。对于缩略图的生成,我可以使用 JMF 等(我注意到还有另一篇文章讨论了如何生成和访问:从较大的图像文件中获得更好质量的缩略图)。但我担心的是:如何扩展?Java EE EJB 还是简单的 Java SE 线程?有什么缺点和优点?如何使用 EJB 进行水平扩展?

我对可扩展性问题不太熟悉,非常感谢您的友好建议。

谢谢。

4

5 回答 5

4

同意...线程应该有助于在单台机器上扩展。如果你想在不同的机器上进行扩展 - 使用 Terracotta。

于 2009-06-16T16:24:40.310 回答
0

Java SE 线程可以帮助您在单台机器上扩展,但如果您需要在不同机器上水平扩展,EJB 将是一种方法。

如果是我,我可能会将其分配到一个单独的 Web 服务层,该层可以根据需要在尽可能多的机器上运行,然后在这些机器之间进行负载平衡。

于 2009-06-16T15:44:59.377 回答
0

我看不出在这种情况下使用 EJB 的理由。你必须问自己瓶颈在哪里。我的赌注是视频处理。我会分析您的应用程序并查看在等待时间片的时间多于处理时间之前可以处理多少线程。在某个点之后添加更多线程不会增加更多吞吐量。到那时,您就知道一台机器会做什么以及需要多少台机器才能维持一定的吞吐量。如何跨机器扩展是另一个问题。

于 2009-06-16T16:58:59.303 回答
0

留下正式的 J2EE 堆栈。

而是一个很好的消息队列,它将 JMS 与运行 Y 个线程的 X 个 JVM 作为消费者进行对话。

于 2009-11-02T22:04:25.017 回答
0

这是两个截然不同的问题。

捕获/处理听起来像是渲染农场的问题。这些都是水平缩放的。大多数解决方案都涉及作业队列,您甚至不需要在 Java 中执行此操作;只需找到您喜欢的简单解决方案即可。“render farm ffmpeg”或类似的东西应该在谷歌中产生结果。

您的“作为 Web 服务提供”部分有些不确定。如果您希望这些视频可以访问,您可能只需将它们放在 HTTP 服务器上 - 这些可以轻松进行负载平衡,因此可以水平扩展 - 存储速度或网络带宽可能是您的第一个瓶颈。

于 2009-06-16T18:45:19.077 回答