【问题标题】:How to handle User Audit Logs (or other frequent client-side actions) in a Web App?如何在 Web 应用程序中处理用户审核日志(或其他频繁的客户端操作)?
【发布时间】:2018-11-06 08:22:02
【问题描述】:

这里的建筑问题。我有一个 Web 应用程序(HTML5/Javascript/AngularJS),它通过 Web API 将用户活动记录到后端数据库中。此函数在整个应用程序中的菜单和按钮点击等事件上运行得非常频繁。为每个此类事件进行 API 调用似乎很广泛,我想知道此类更新的最佳做法是什么,或者,如何在其客户端脚本上使用 Google Analytics 等服务实现?

【问题讨论】:

  • 这里的关键问题是,“记录用户活动”是什么意思?我很想在可能的情况下使用 GA,并在信息保密的情况下使用您自己的数据库日志记录,或者对 GA 处理过于复杂,或者(如果您使用免费的 GA 帐户)在 GA 进行快照而您不这样做的情况下不想那样。关于您的最后一个问题,GA 快照(即不绝对处理每个事件)它想要的,除非您为完整许可证支付大量费用。顺便说一句,您可能想查看 GA 自定义维度。
  • 感谢您的回答。想要在本地记录用户活动的原因是客户需要对记录的信息保持机密性和完全控制权。
  • 一切都取决于您真正需要跟踪的事件/用户数量,然后....以及您的数据库是否可以承受额外的流量,显然。您可能想考虑某种具有轻量级 Javascript 客户端的队列机制,数据库写入异步发生。 (IBM MQ 显然有一个:ibm.com/support/knowledgecenter/en/SSFKSJ_7.5.0/…

标签: javascript angularjs asp.net-web-api google-analytics audit-logging


【解决方案1】:

我一直在寻找与我工作的地方非常相似的东西。首先,您确实希望发送到 API 的数据尽可能小,以便发送所有这些事件不会占用太多带宽。我们意识到的下一件事是使用某种队列,RabbitMQ、Azure 服务总线、MSMQ 或 Amazon SQS 或类似的东西。

API 端点应该只获取数据并将其放入队列中。然后让另一个程序或服务按照自己的节奏读取队列中的消息,并将任何插入到数据库中。

在高峰时间,您不应该看到 API 的性能有任何下降,当您的系统受到重击时,唯一会发生的事情是数据可能需要几秒钟到几分钟才能插入到数据库。

您实际上是在队列中进行批处理,而不必担心批处理客户端

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多