如何在 Web 应用程序中处理用户审计日志(或其他频繁的客户端操作)?
How to handle User Audit Logs (or other frequent client-side actions) in a Web App?
这里是架构问题。我有一个 Web 应用程序 (HTML5/Javascript/AngularJS),它通过 Web API 将用户 activity 登录到后端数据库。此函数在整个应用程序中的菜单和按钮点击等事件中运行得相当频繁。为每个此类事件进行 API 调用似乎范围很广,我想知道此类更新的最佳实践是什么,或者,如何使用诸如 Google Analytics 之类的服务在他们的客户端上实现脚本?
我一直在寻找与我工作的地方非常相似的东西。首先,您真的希望发送到 API 的数据尽可能小,这样发送所有这些事件就不会占用太多带宽。我们意识到的下一件事是使用某种队列,RabbitMQ、Azure 服务总线、MSMQ 或 Amazon SQS 或类似的东西。
API端点应该只获取数据并将其放入队列。然后让另一个程序或服务按照自己的节奏读取队列中的消息,并向数据库中插入任何内容。
在高峰时段,您不应该看到 API 的性能下降,当您的系统受到攻击时,唯一会发生的事情是数据可能需要几秒钟到几秒钟插入数据库的分钟数。
您实际上是在对队列进行批处理,而不必担心对客户端进行批处理
这里是架构问题。我有一个 Web 应用程序 (HTML5/Javascript/AngularJS),它通过 Web API 将用户 activity 登录到后端数据库。此函数在整个应用程序中的菜单和按钮点击等事件中运行得相当频繁。为每个此类事件进行 API 调用似乎范围很广,我想知道此类更新的最佳实践是什么,或者,如何使用诸如 Google Analytics 之类的服务在他们的客户端上实现脚本?
我一直在寻找与我工作的地方非常相似的东西。首先,您真的希望发送到 API 的数据尽可能小,这样发送所有这些事件就不会占用太多带宽。我们意识到的下一件事是使用某种队列,RabbitMQ、Azure 服务总线、MSMQ 或 Amazon SQS 或类似的东西。
API端点应该只获取数据并将其放入队列。然后让另一个程序或服务按照自己的节奏读取队列中的消息,并向数据库中插入任何内容。
在高峰时段,您不应该看到 API 的性能下降,当您的系统受到攻击时,唯一会发生的事情是数据可能需要几秒钟到几秒钟插入数据库的分钟数。
您实际上是在对队列进行批处理,而不必担心对客户端进行批处理