我想将产品或帖子视图与其他元数据一起保存在数据库中,例如谁查看了对象,推荐,时间等。
所有活动都将用于推荐引擎、更新表和更多后台工作。
主要关注的是速度,无论是用户体验还是SEO。
我有3种方法:
- 从数据库中读取记录,并写入活动 (2交易)。
- 更新视图的记录(1 个事务),而不是读取。
- 读取记录并将活动对象发送到 Redis 或 RabbitMQ。
我正在使用Ruby on Rails和PostgreSQL。
第一个方法比第二个方法快吗?对于小型 Web 应用程序,第三个选项是否矫枉过正?
为了提高其他可扩展性的性能,请使用选项 #3 中的 Redis 或 RabbitMQ。
应用程序大小在确定何时使用消息队列时并不重要。 相反,系统需求决定了这一点。
存储用户的视图和活动是一个很好的示例,说明何时应使用队列以保持原始 HTTP 请求的快速。
进行单个网络调用以将事件数据发布到 RabbitMQ,并根据需要拥有任意数量的使用者,以便在后台将所有事件数据记录在数据库中。
同时,用户已经很高兴地查看您的网页,而所有这些都发生在另一台服务器上,其他地方。