我有一个应用程序...
该应用程序对金融产品进行市场比较 - 对于给定的报价请求,它会联系其他几个网站以获取报价。然后它会为用户提供结果——他们的详细信息的几个报价。
为了管理这些请求,它们被保存到 MySQL 中,然后我的应用程序启动,获取挂起的报价并将它们发送到线程(所有相同的 Linux 机器)以处理每个站点查找。
我正在使用 JRuby,因为我遇到了与线程/数据库相关的问题。使用 Java 线程池来控制线程数。使用当前的硬件/VPS - 它可以处理大约 200 个线程。许多限制似乎与每个线程获取自己的 MySQL 连接有关——获取报价细节并保存结果。我们想要处理更多的并发线程,因此寻找扩大规模的方法。
想知道走哪条路...
- 更大的硬件...
- 更多机器并使用某种排队机制(具有优先级)在机器之间共享负载 - 所以线程不会接触数据库,所有细节/响应都通过队列进行 - 所以数据库命中较少,但也许我我只是将问题推入队列。考虑使用 MongoDB 之类的东西作为队列,但对建议持开放态度 - 一些易于使用 Ruby 的东西 :)
- 某种远程/RPC 机制,例如 dRb - 从理论上讲,这似乎是一个不错的选择,但尚未对此做任何事情,还不知道它会使事情变得多么复杂。
- 还有什么……?
从此链接不扩大规模与扩大规模的原因?- 看起来这个问题适合运行更多的机器来解决它。
所以,关于走哪条路的任何想法......
干杯,克里斯