0

这不是一个这样或那样的问题,试图找出我在差异和理解中缺少什么。通常,当我想分配工作和排队时,我会将要完成的工作写入 mysql 或 mongodb 等数据库,然后我将进行一些设置,我可以锁定行记录并解锁它以避免两个节点在同一个节点上工作事物。现在我最近听说了 gearman,并试图找出它与简单的数据库解决方案之间的区别。谁能告诉我我错过了什么?

我正在处理的应用程序正在获取大量复杂的日志数据并能够对其进行一些分析。为了避免过载,我不想当场处理。所以需要他们排队我只是通常将它们写入数据库并等待所以现在我试图了解差异是什么以及为什么我所做的是“错误的方式”

4

1 回答 1

1

最大的不同是 gearman 不是数据库。我知道你知道这一点,但我想我会重申一下。Gearman 是一个独立的实体,必须作为一个守护进程独立运行。

Gearman 是一个分布式工作队列和工作器,而 MySQL 或 MongoDB 等数据库没有真正内置的分布式工作队列器和工作器。

Gearman 有一个分布式作业注册和复制系统,这是普通数据库所没有的。它还可以(如我所说)在一个大型集群中均匀地分配工作人员和作业(想想 AWS 现场实例上的集群处理)。

当不使用 Gearman 时,您可能会在尝试在自己的代码中实现所有 Gearman 所做的事情时头疼,尤其是在 PHP 中,它在守护程序模式下运行非常糟糕。

因此,使用 Gearman,您可以获得一个完整的社区开发和审查的分布式工作队列和工作人员,而使用您自己的代码......我不确定您会得到什么,因为我不确定您输入工作队列和工作人员的内容。

编辑

Gearman 在一个简单解决方案上的用例将是:

  • 分布式视频编码器
  • 方程的科学集群计算
  • 计算硬件的通用池化以创建堆栈以处理其他任务

真正的 Gearman 在分布式环境中大放异彩。它就像分布式作业队列和工作人员的 MongoDB。它只是缩放。

话虽如此,如果您正在运行一个具有非大规模分布式工作集群的简单应用程序,那么 Gearman 可能会矫枉过正。但从我个人使用它的经验来看,Gearman 的设置并不比你自己的队列难。

于 2012-10-02T08:01:44.170 回答