【问题标题】:How to create a logging system for a system that serves users?如何为服务于用户的系统创建日志系统?
【发布时间】:2020-03-05 14:25:15
【问题描述】:

我有一个系统(在 NODE.JS 中)为用户(大约 10000 个用户)提供服务,我想在他们执行的每一步都写入数据库。

例如:

1.当用户登录/注销时——写入数据库

2.当用户更改个人资料时 - 也

3.用户进行了某种交易...等

我不想为用户执行的每个操作添加数据库操作,因为这需要更多的处理时间,而且在更大范围内可能会出现延迟。

在没有太多延迟的情况下,每一步都写入数据库的最佳方法是什么?

【问题讨论】:

  • 您是否担心因请求和查询或您的节点应用程序而导致数据库过载?
  • 您为什么认为您的日志记录工作比数据库操作(已由数据库开发人员优化)对服务器的负载要少?
  • @AndrewEisenberg:是的。

标签: node.js database design-patterns rabbitmq scalability


【解决方案1】:

这里有很多可能性。虽然在我进入它们之前,我不确定您是否需要过多担心每个请求的几个数据库调用的额外开销。 Node 在处理请求时非常高效,因为一切都是异步发生的。此外,数据库通常设计用于处理此类流量。

话虽如此,如果您尝试过在想要记录时调用数据库的简单方法,那么您有多种选择:

  1. 将日志条目写入文件,然后在以后流量较低时批量处理它们。
  2. 使用不会影响主数据库的单独数据库进行日志记录
  3. 使用像splunk 这样的日志管理系统,而不是数据库。
  4. 使用存储过程或数据库触发器确保记录所有数据库调用,而无需单独调用数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2013-01-03
    相关资源
    最近更新 更多