2016-06-15 32 views
0

Мне нужно было знать, подходит ли система управления очередью laravel 5 для крупных проектов (около 100 000 пользователей). Я хочу каждый день делать что-то вроде сообщений (а не спама :)).
Является ли redis достаточно хорошим для этой работы (в очереди)? Или лучше использовать lib, специально предназначенный для очередей (например, beanstalkd)?Является ли система очереди laravel подходящей для больших проектов?

+1

Почему провалить? Вы можете просто не отвечать, если вы ничего не знаете об этом. –

ответ

4

Чтобы быть справедливым и попытаться опубликовать разумный ответ на этот вопрос, мы должны рассмотреть следующие вопросы:

  • Число абонентов
  • Содержания быть доставлены
  • системных ресурсов, необходимых для одновременные очереди

100 000 подписных электронных писем потребуют хранения 100 000 x [данных] в ОЗУ, поэтому позволяет усреднить длину адреса электронной почты до 32 символов (байт эс).

100000 х 32 байт = 3.2MB

Конечно, система очереди Laravel в serialises объекты, поэтому фактическое использование памяти, вероятно, будет выше (память Redis используется для очереди Laravel), но не достаточно, чтобы беспокоиться.

я советовал в прошлом, что, казалось бы, успешной установки для отправки Помеченные сообщения электронной почты будет работать на следующем: минимум

  • 2GB RAM
  • 2 процессоров/ядер

Система очередей Laravel работает не слишком с налогом на сервере. Как всегда, масштабируйте с требованиями.

Программное обеспечение для таких (с использованием Laravel) будет состоять из следующих действий:

  • Redis
  • Supervisor

Настройка Redis в качестве водителя очереди Laravel в. Не забудьте указать composer require predis/predis.

Вам также потребуется создать миграцию для хранения неудавшихся заданий. Laravel имеет один встроенный по умолчанию:

php artisan queue:failed-table

php artisan migrate

После установки супервизора, создайте файл конф в /etc/supervisor/conf.d так, что руководитель может подобрать по конфигурации для вашей очереди:

touch /etc/supervisor/conf.d/myprojectqueue.conf nano /etc/supervisor/conf.d/myprojectqueue.conf

Здесь вы найдете конфигурацию, соответствующую вашей среде нт.В следующем демо создан, 4 бегунов очереди будут выполняться на очереди сразу:

[program:myprojectqueue] 
    command=php /path/to/project/artisan queue:listen --tries=1 
    directory=/path/to/project 
    stdout_logfile=/path/to/project/storage/logs/supervisord.log 
    redirect_stderr=true 
    autostart=true 
    autorestart=true 
    numprocs = 4 
    process_name = %(program_name)s%(process_num)s 

Сохраните файл конф. Начать/перезапустить диспетчер.

Для получения дополнительной информации:

https://laravel.com/docs/master/queues

https://laravel.com/docs/master/queues#supervisor-configuration

https://laravel.com/docs/master/mail#queueing-mail

https://laravel.com/docs/master/scheduling

+0

Спасибо @ Justin. Это был полный и убедительный ответ. Я попробовал очередную очередь laravel с redis. И я тоже проверял коды ларавелла. Я понял, что laravel самостоятельно управляет очередью, а redis - только база данных с поддержкой. Я думаю, что это делает очередь медленнее. Просто хотел узнать, о чем я хочу, чтобы реализовать систему управления очередями, отделенную от моего основного проекта. Например, с использованием python (django) и сельдерея? Или с cpp и beanstalk? –

 Смежные вопросы

  • Нет связанных вопросов^_^