Зачем нужен memcache / redis при наличии расписания "onOneServer"? - PullRequest
1 голос
/ 10 мая 2019

При столкновении с архитектурой, в которой задействованы несколько веб-серверов, на которых выполняется одно приложение laravel, возникает проблема доступности.

Когда задействованы два сервера, только один из них должен выполнить запланированное задание.В этом сценарии вы, очевидно, использовали бы атрибут onOneServer.

Подробнее см. документацию laravel по этому вопросу .

Теперь вот актуальный вопрос:Документация гласит:

{note} Чтобы использовать эту функцию, ваше приложение должно использовать драйвер кэша memcached или redis в качестве драйвера кэша вашего приложения по умолчанию.Кроме того, все серверы должны обмениваться данными с одним и тем же сервером центрального кэша.

Я просто не понимаю, почему это невозможно сделать с помощью серверной части базы данных.Буду признателен за любую подсказку.

Ура, Томас

1 Ответ

1 голос
/ 10 мая 2019

Когда Тейлор представил функцию onOneServer(), он объяснил это следующим образом:

Примечание. При использовании этой функции вам потребуется использовать драйверы кэша Redis или Memcached. Эти драйверы обеспечивают атомарность, необходимую для защиты замков, которые обеспечивают эту функцию.

Вы можете узнать больше о распределенной блокировке в redis . Мне известно, что некоторые драйверы базы данных, такие как MySQL , также предоставляют функции блокировки, поэтому я предполагаю, что эта функция потенциально также будет работать с ними. Однако на данный момент они не реализованы.

...