这不是一个或那个问题试图找出我在差异和理解中缺少的东西。通常,当我想分配工作和排队的东西时,我会将要完成的工作写入像mysql或mongodb这样的数据库,然后我会有一些设置,我可以锁定行记录并解锁它以避免两个节点在同一个工作事情。现在我最近听说过gearman并试图找出它与简单的数据库解决方案之间的区别。任何人都可以告诉我我错过了什么?
我正在处理的应用程序正在处理大量复杂的日志数据,并能够对其进行一些分析。避免过载我不想当场处理。所以需要他们排队我只是通常把它们写到数据库然后等待,所以现在我想要了解差异是什么以及为什么我在做的是“错误的方式”
答案 0 :(得分:1)
最大的区别是,gearman不是一个数据库。我知道你知道这一点,但我想我会重申一下。 Gearman是一个独立的实体,必须自己作为一个守护神。
Gearman是一个已经预先制作的分布式工作队列和工作人员,而像MySQL或MongoDB这样的数据库没有真正内置的分布式工作队列和工作者。
Gearman有一个分布式作业注册和复制系统,普通数据库没有。它还可以在大型集群中均匀分配(如我所说)工作者和作业(考虑AWS点实例上的集群处理)。
当不使用Gearman时,您可能会头痛地尝试在您自己的代码中实现gearman所做的所有事情,尤其是在以deamon模式运行时非常糟糕的PHP中。
因此,使用Gearman,您可以获得一个完整的社区开发和审查分布式工作队列和工作人员,而使用您自己的代码......我不确定您会得到什么,因为我不确定您输入到您的工作队列和工作人员。
Gearman的一个简单解决方案的用例是:
真的Gearman在分布式环境中闪耀。它就像分布式作业队列和工作人员的MongoDB。它只是缩放。
如果您正在运行一个没有大规模分布式工作群集的简单应用程序,那么Gearman可能会有点过分。但根据我个人使用它的经验,Gearman设置并不比你自己的队列困难得多。