使用Beanstalkd和队列的数据库驱动程序有很大区别吗?
有什么优点和缺点?数据库队列似乎更容易设置和运行,我应该知道如何使用它?
在文档中没有真正的解释。
答案 0 :(得分:18)
将数据库用作队列可以更简单地设置,并且可能更容易在开发计算机上进行测试。但是在生产中将数据库作为队列运行可能不是一个好主意;特别是在高流量情况下。虽然数据库可能不是排队的正确工具,但让我们看一下专业人员和职业选手。这样使用它的好处。
优点:
缺点:
构建消息队列,例如SQS,Beanstalkd,RabbitMQ等,以处理这些场景。由于它们只关心存储和处理的消息,因此它们不必担心锁定和事务日志记录(数据库需要)。向系统添加消息传递队列将有助于它更容易扩展。此外,它还允许数据库通过允许它进行实际的事务处理而不必担心消息传递而进行呼吸。
答案 1 :(得分:2)
我在我的一台生产服务器上进行了一些测试。
方案: javafx.scene.control.Button
(要插入新条目,您需要确保Insert a new visitor tracking info (ip, city, state, country, lat, lng, user-agent, etc)
在过去24小时内没有访问过该条目,所以它也有一个IP
查询。
(注意:表格大小以百万为单位,实例为select
,只是为了查看最糟糕的情况)
以下是我得到的数字:
micro
|--------------|----------|----------|
| Queue Driver | TTFB | Blocking |
|--------------|----------|----------|
| Sync | 2.130sec | YES |
| Database | 0.430sec | NO |
| AWS SQS | 0.855sec | NO |
|--------------|----------|----------|
是最糟糕的选择,因为用户在开始接收任何数据之前必须坐在那里2.3秒。sync
效果最好,但如前所述,可能不是高访问者数量的最佳解决方案。此外,您不应该忘记database
表格中仍有insert
。jobs
比使用数据库慢。我猜测它是因为AWS SQS
已经与连接池中的数据库建立了连接,但database
每次都必须建立SQS
连接。因此,额外的300-400ms。老实说,我认为TLS
很难设置(只需按照guide)。我认为该决定取决于您的访客号码。
答案 2 :(得分:-3)
CON Beanstalkd需要在服务器上设置和安装软件。自我托管。