2016-08-03 67 views
0

我在节点js中构建了一个API服务器,它应该在重负载下工作。我基本上想要以小批量(每个约10个项目)累积传入的插入请求,并且一旦填充了批次,就将这些项目插入到数据库中。目前,我正在使用Amazon SQS作为我的队列服务,以及我设计的一个单独的队列使用者应用程序。但是,我想也许我可以在本地累积消息,然后直接从API中插入批处理。这将消除与远程队列服务通信的开销,并且由于批量很小,API服务器的内存不会被夸大。你怎么看?优点和缺点?api服务器 - 队列服务vs本地迷你队列

回答

0

您提到在您的服务器上负载很重。如果您尝试实施队列来收集传入的请求,那么它最终可能会消耗服务器上的大量内存。在你有自我扩展能力之前,这总是一个风险。您应该考虑以下内容: - 总批量大小 - 每个请求的最大大小 这将帮助您防止内存不足问题。

其他注意事项应该是: - 它是分布式/集群环境吗?如果是,那么请考虑一下2个请求是否有关联,并且你想在一个服务器上将它们组织在一起? - 定时器:你的队列是否有定时器机制。我可以看到,我没有数据库插入,所以有插入不能等​​待一批完成写入数据库的情况。如果是,则实现定时器以保持(不管批次是否已满) - 检查服务器是否出现尖峰攻击,您的排队机制是否能够很好地处理它?任何事情都像钉钉子的政策。 - 系统故障是否可能会丢失部分批量插入数据? - 我可以看到,通过这样做,您正尝试为远程通话节省通话时间。但是,如果你阻止请求获得持续(批量),你真的关心过境时间(真正的关注)?如果不是那么SQS是更可靠的高效解决方案&。

除了这些,尝试防止您的系统从SQL注入攻击。