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