使用 Beanstalkd 和队列数据库驱动程序之间有很大区别吗?
优点和缺点是什么?数据库队列似乎更易于设置和运行,我应该了解如何使用它?
文档中没有关于它的真正解释。
最佳答案
使用数据库作为队列可以更简单地设置并且可能更容易在开发机器上进行测试。但是在生产中将数据库作为队列运行可能不是一个好主意;特别是在高流量场景中。尽管数据库可能不是排队的正确工具,但让我们看看使用它的优缺点。
优点:
- 设置更简单
- 如果您使用相同的数据库,可能会减少应用程序中移动部件的数量
缺点:
- 对于大量的读取和写入,必须有一些机制来锁定行和更新索引等。
- 轮询工作人员也会锁定一个索引以便对其进行处理,并使用作业的最终状态更新该行。
- 在这种情况下,对数据库的写入可能会排队,并且需要更长的时间才能执行。
SQS、Beanstalkd、RabbitMQ 等消息队列就是为处理这些场景而构建的。由于他们只关心正在存储和处理的消息,因此他们不必担心锁定和事务日志记录(这是数据库所需要的)。向系统添加消息队列将有助于更轻松地扩展。此外,它还可以让数据库进行实际的事务处理,而不必担心消息传递,从而让数据库得以喘息。
关于database - Laravel 队列、Beanstalkd 与数据库,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096217/