Ruby Rails 中的跟踪活动最佳实践

Tracking activities best practice in Ruby on Rails

我想在数据库中保存产品或帖子的浏览量以及其他元数据,例如谁查看了对象、推荐、时间等。

所有活动都将用于推荐引擎、更新表和更多后台工作。

对于用户体验和 SEO 来说,主要关注的是速度。

我提出了 3 种方法:

  1. 从数据库中读取记录,写入activity(2 交易)。
  2. 不是读取,而是更新视图的记录(1 个事务)。
  3. 读取记录并将activity对象发送到Redis或RabbitMQ。

我在 Rails 上使用 Ruby 和 PostgreSQL。

第一种方法比第二种方法快吗? 对于小型 Web 应用程序,第三个选项是否有点矫枉过正?

为了其他可扩展性的性能,使用选项 #3 中的 redis 或 rabbitmq。

应用程序大小在确定何时使用消息队列时并不重要。相反,系统需求决定了这一点。

为用户存储视图和活动是一个很好的例子,说明何时应该使用队列来保持原始 http 请求的速度。

进行一次网络调用以将事件数据发布到 rabbitmq,并根据需要拥有尽可能多的消费者,以在后台记录数据库中的所有事件数据。

与此同时,用户已经在愉快地查看您的网页,而所有这些都发生在另一台服务器上,在其他地方。