Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php gearman还是定制mongo_Php_Mongodb_Gearman - Fatal编程技术网

Php gearman还是定制mongo

Php gearman还是定制mongo,php,mongodb,gearman,Php,Mongodb,Gearman,这不是一个这样或那样的问题,试图找出我在差异和理解中遗漏了什么。通常,当我想要分布式工作和排队时,我会将要完成的工作写入mysql或mongodb之类的数据库,然后我会进行一些设置,可以锁定行记录并解锁它,以避免两个节点在同一件事情上工作。现在,我最近听说了gearman,并试图找出它与简单数据库解决方案之间的区别。谁能告诉我我错过了什么 我正在开发的应用程序获取了大量复杂的日志数据,并能够对其运行一些分析。为了避免过载,我不想当场处理。因此,需要它们排队,我通常只是将它们写入数据库,然后等待,

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


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

最大的区别是gearman不是一个数据库。我知道你知道这一点,但我想我会重申一下。Gearman是一个独立的实体,必须以执事的身份独立运行

Gearman是一个分布式工作队列和工作线程,而MySQL或MongoDB之类的数据库没有真正内置的分布式工作队列和工作线程

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

如果不使用Gearman,您可能会很头疼如何在自己的代码中实现Gearman所做的所有事情,尤其是在PHP中,它在deamon模式下运行时非常糟糕

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

编辑 Gearman在简单解决方案上的使用案例如下:

  • 分布式视频编码器
  • 方程的科学聚类计算
  • 计算硬件的通用池,用于创建堆栈以处理其他任务
实际上,Gearman在分布式环境中大放异彩。它就像分布式工作队列和工人的MongoDB。它只是规模


这就是说,如果你运行的是一个简单的应用程序,没有大规模的分布式工作集群,那么Gearman可能会有点过火。但根据我个人使用它的经验,Gearman的设置并不比您自己的队列难多少。

在一个简单的定制解决方案上,它会有什么样的用例?