NodeJSlogging服务devise

我需要使用NodeJS和Mongo编写日志服务。 它每秒至less得到10,000个http请求,我不能丢失数据。 我正在使用负载均衡器的多个服务器,每个服务器也使用集群进行扩展。 有没有人有一个不丢失数据的想法? 我想也许我可以将请求保存在一个队列(sqs)中,并且每个间隔读取消息并向数据库中插入一个批量,如果失败将其保留在队列中,所以我不会丢失数据。 所有的服务器可以读写同一个队列吗? 有没有人有更好的主意? 谢谢。

这是一个非常模糊的问题,但你正在思考的正确方向。

如果您的主要目标是不丢失日志数据并保持高吞吐量,则应始终尝试接收任何传入数据,将其转储到队列中,并尽可能快地返回成功响应。

这将最大限度地减less处理每个请求的时间,提高应用程序的吞吐量,并且通常会提高可靠性。

一旦将数据存入像SQS这样的排队系统中,您绝对可以运行后台进程,只需执行批量数据库插入即可。

如果日志数据<64kb,则可能需要考虑使用像DynamoDB这样的解决scheme来存储生成的日志数据。 执行INSERTS的速度非常快,具有非常低的延迟(因为它在AWS上运行,就像SQS一样),并且可以扩展以轻松处理吞吐量。