Снайпер или обычай монго
Это не тот или иной вопрос, пытающийся выяснить, чего мне не хватает в разнице и понимании. Обычно, когда я хочу распределить работу и ставить в очередь вещи, я записываю задания для выполнения в базу данных, такую как mysql или mongodb, и тогда у меня будет что-то настроенное, что я могу заблокировать запись строки и разблокировать ее, чтобы избежать двух узлов, работающих на одном и том же вещь. Теперь я недавно слышал о gearman и пытаюсь найти разницу между этим и простым решением для базы данных. Кто-нибудь может сказать мне, что мне не хватает?
Приложение, над которым я работаю, берет много сложных данных журнала и может использовать некоторые аналитические данные. чтобы избежать перегрузки я не хочу обрабатывать на месте. Поэтому, когда они стоят в очереди, я просто записываю их в базу данных и жду, так что теперь я пытаюсь получить четкое представление о том, в чем разница и почему то, что я делал, было "неправильным путем"
1 ответ
Самая большая разница в том, что gearman не является базой данных. Я знаю, что вы это знаете, но я подумал, что повторю это. Gearman - это отдельная сущность, которая должна сама действовать как демон.
Gearman - это распределенная рабочая очередь, и рабочий уже готов, тогда как в базе данных, такой как MySQL или MongoDB, нет встроенной распределенной рабочей очереди и рабочего.
Gearman имеет распределенную систему регистрации и репликации, чего нет в обычных базах данных. Кроме того, он может равномерно распределять (как я уже говорил) работников и задания по большому кластеру (подумайте о кластерной обработке в точечных экземплярах AWS).
Когда вы не используете Gearman, у вас, вероятно, возникнет головная боль при попытке реализовать все то, что Gearman делает в вашем собственном коде, особенно в PHP, который ужасно работает в режиме deamon.
Таким образом, с Gearman вы получаете полное сообщество, разработанное и проверенное распределенной рабочей очередью и работником, тогда как с вашим собственным кодом... ну, я не уверен, что вы получите, так как я не уверен, что вы вводите в свою рабочую очередь и работника.
редактировать
Варианты использования Gearman по сравнению с простым решением:
- Распределенный видеокодер
- Научный кластерный расчет уравнений
- Общее Объединение вычислительного оборудования для создания стека для обработки других задач.
Действительно Gearman сияет в распределенных средах. Это как MongoDB распределенных очередей заданий и рабочих. Это просто масштабируется.
Тем не менее, если вы работаете с простым приложением с не крупномасштабным распределенным кластером рабочих, то Gearman может быть излишним. Но из моего личного опыта его использования Gearman не намного сложнее в настройке, чем ваша собственная очередь.