database - Laravel 队列、Beanstalkd 与数据库,有什么区别?

标签 database laravel laravel-5 message-queue beanstalkd

使用 Beanstalkd 和队列数据库驱动程序之间有很大区别吗?

优点和缺点是什么?数据库队列似乎更易于设置和运行,我应该了解如何使用它?

文档中没有关于它的真正解释。

最佳答案

使用数据库作为队列可以更简单地设置并且可能更容易在开发机器上进行测试。但是在生产中将数据库作为队列运行可能不是一个好主意;特别是在高流量场景中。尽管数据库可能不是排队的正确工具,但让我们看看使用它的优缺点。

优点:

  • 设置更简单
  • 如果您使用相同的数据库,可能会减少应用程序中移动部件的数量

缺点:

  • 对于大量的读取和写入,必须有一些机制来锁定行和更新索引等。
  • 轮询工作人员也会锁定一个索引以便对其进行处理,并使用作业的最终状态更新该行。
  • 在这种情况下,对数据库的写入可能会排队,并且需要更长的时间才能执行。

SQS、Beanstalkd、RabbitMQ 等消息队列就是为处理这些场景而构建的。由于他们只关心正在存储和处理的消息,因此他们不必担心锁定和事务日志记录(这是数据库所需要的)。向系统添加消息队列将有助于更轻松地扩展。此外,它还可以让数据库进行实际的事务处理,而不必担心消息传递,从而让数据库得以喘息。

关于database - Laravel 队列、Beanstalkd 与数据库,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096217/

相关文章:

sql - 您是否将索引放在源代码管理中?

php - 拉维尔 5 : link to php page

php - 无法创建 Laravel 项目,因为缺少 mcrypt 扩展

php - $request->route() 在 laravel 中返​​回 null

mysql - 在数据库中为这个 MySQL 表创建一个 uniqueID 是否有意义?

database - 反规范化并减少四个数据库表之间的多个关系中的冗余

sql - 如何在不重新输入字段名称的情况下比较字段的修剪长度和未修剪长度?

php - 无法在后台和守护进程中运行 artisan redis :subscribe command as service,

php - RouteCompiler 中的 Laravel DomainException 变量名称在路由模式中不能超过 32 个字符

laravel - 将 Eloquent 关系转化为vue js代码