我們有一個給定一批請求的系統,可以對外部第三方API進行等量的調用。鑑於這是一個I/O綁定任務,我們目前使用大小爲20的緩存線程池來處理這些請求。除以上,是解決:與多個核(較少上下文切換,能夠支持多個併發線程)爲大量外部API請求擴展軟件/硬件?
或
使用多個機器
使用機器更少通過利用商品/廉價硬件(披薩盒)
我們每天收到的請求的數量是百萬。
我們使用Java,所以這裏的線程是內核,而不是「綠色」。
其他點數/思考:
- Hadoop是常用於這種性質的問題,但這個需要是實時與刻板的離線數據挖掘。
- 的API請求是200ms至2秒的平均
- 採取任何地方有要求
- 第三方的問題是能夠服務更多的要求比我們所能火(支付供應商)之間沒有共享的狀態。
您是否有共享狀態,用於處理請求?如果是這樣,它變化的頻率如何?這個共享狀態的大小是多少? –
第三方API的限制是什麼?如果您調用的API仍然是瓶頸,那麼擴展您的堆棧就沒有意義了。你可以緩存你從它接收到的數據,還是使用來自一個服務/同時爲你的許多客戶提供的數據? – Paolo
編輯我原來的帖子回答上面的問題。這些調用是完全獨立的,所以沒有要緩存的數據。 – smonky