针对大量外部API请求的java扩展软件/硬件?
我们有一个系统,在给定一批请求的情况下,对外部第三方API进行等量的调用。鉴于这是一个I/O绑定的任务,我们目前使用大小为20的缓存线程池来服务这些请求。除上述之外,解决方案是:
Use fewer machines with more cores (less context-switching, capable of supporting more concurrent threads)
或者
Use more machines by leveraging commodity/cheap hardware (pizza boxes)
我们每天收到的请求数量约为数百万
我们使用的是Java,所以这里的线程是内核,而不是“绿色”
其他观点/想法:
- Hadoop通常用于解决这种性质的问题,但与传统的离线数据挖掘相比,这需要是实时的李>
- API请求平均需要200毫秒到2秒的时间
- 请求之间没有共享状态
- 有问题的第三方能够处理比我们可能解雇的(支付供应商)更多的请求李>
# 1 楼答案
我并不清楚你需要更多的资源(更大的机器或更多的机器)。如果你说的是一天内最多1000万个请求,每个请求最多耗时2秒,这意味着:
你能提供一些更多的信息来说明为什么你认为你必须做出这个选择吗
# 2 楼答案
与使用大量线程相比,使用node.js的事件驱动I/O可能会更好,但需要注意的是,这可能意味着需要进行大量的重写,并且节点已被删除。js相当年轻
这个SO article可能很有趣