2016-08-03 98 views
0

我在節點js中構建了一個API服務器,它應該在重負載下工作。我基本上想要以小批量(每個約10個項目)累積傳入的插入請求,並且一旦填充了批次,就將這些項目插入到數據庫中。目前,我正在使用Amazon SQS作爲我的隊列服務,以及我設計的一個單獨的隊列使用者應用程序。但是,我想也許我可以在本地累積消息,然後直接從API中插入批處理。這將消除與遠程隊列服務通信的開銷,並且由於批量很小,API服務器的內存不會被誇大。你怎麼看?優點和缺點?api服務器 - 隊列服務vs本地迷你隊列

回答

0

您提到在您的服務器上負載很重。如果您嘗試實施隊列來收集傳入的請求,那麼它最終可能會消耗服務器上的大量內存。在你有自我擴展能力之前,這總是一個風險。您應該考慮以下內容: - 總批量大小 - 每個請求的最大大小 這將幫助您防止內存不足問題。

其他注意事項應該是: - 它是分佈式/集羣環境嗎?如果是,那麼請考慮一下2個請求是否有關聯,並且你想在一個服務器上將它們組織在一起? - 定時器:你的隊列是否有定時器機制。我可以看到,我沒有數據庫插入,所以有插入不能等​​待一批完成寫入數據庫的情況。如果是,則實現定時器以保持(不管批次是否已滿) - 檢查服務器是否出現尖峯攻擊,您的排隊機制是否能夠很好地處理它?任何事情都像釘釘子的政策。 - 系統故障是否可能會丟失部分批量插入數據? - 我可以看到,通過這樣做,您正嘗試爲遠程通話節省通話時間。但是,如果你阻止請求獲得持續(批量),你真的關心過境時間(真正的關注)?如果不是那麼SQS是更可靠的高效解決方案&。

除了這些,嘗試防止您的系統從SQL注入攻擊。