我们有一个给定一批请求的系统,可以对外部第三方API进行等量的调用。鉴于这是一个I/O绑定任务,我们目前使用大小为20的缓存线程池来处理这些请求。除以上,是解决:与多个核(较少上下文切换,能够支持多个并发线程)为大量外部API请求扩展软件/硬件?
或
使用多个机器
使用机器更少通过利用商品/廉价硬件(披萨盒)
我们每天收到的请求的数量是百万。
我们使用Java,所以这里的线程是内核,而不是“绿色”。
其他点数/思考:
- Hadoop是常用于这种性质的问题,但这个需要是实时与刻板的离线数据挖掘。
- 的API请求是200ms至2秒的平均
- 采取任何地方有要求
- 第三方的问题是能够服务更多的要求比我们所能火(支付供应商)之间没有共享的状态。
您是否有共享状态,用于处理请求?如果是这样,它变化的频率如何?这个共享状态的大小是多少? –
第三方API的限制是什么?如果您调用的API仍然是瓶颈,那么扩展您的堆栈就没有意义了。你可以缓存你从它接收到的数据,还是使用来自一个服务/同时为你的许多客户提供的数据? – Paolo
编辑我原来的帖子回答上面的问题。这些调用是完全独立的,所以没有要缓存的数据。 – smonky