Доклад с PUG#4 https://www.facebook.com/events/350783888446030/
Презентует:
- Асинхронность в веб-приложениях.
- Систему очередей Gearman.
- Пример Реализации c использование Yii2 + Gearman.
14. Недостатки:
1. Пользователь все так же ждет ответа
2. Зависим от пользователя и его интернет
соединения
3. Растет количество проверок, растет количество JS
кода, растет количество потенциально уязвимых
мест
4. Растет нагрузка на клиентскую часть
Клиентская асинхронность
25. Система очередей Gearman.
возможности gearman:
● Open Source
● Simple & Fast (rewritten in C)
● Support a variety of languages : build Worker in Python, Client in PHP
● Flexible
● Load Balance
● Failover
26. Система очередей Gearman.
PHP Client1
Job Server 1
Worker 1
Connect, submit a job
Send command to
wakу worker Up
Ask For Jobs
27. Система очередей Gearman.
PHP Client1
Job Server 1
Job Server 2
PHP Client2
PHP Client3
PHP Client4
PHP Client5
Worker 1
Worker 2
Worker 3
40. Система очередей Gearman.
Мониторинг состояния:
1. Проверяем что сервер и php ext работают
1. Мониторинг состояния
gearadmin --status
● Function Name
● Number in queue
● Number of jobs running
43. Систему очередей Gearman.
Потенциальные узкие места:
1. Неожиданное завершение работы задачи
2. Неожиданное завершение работы Worker процесса
3. Выход из строя Job Server
4. при изменении кода Worker-а сам Worker не будет изменен
44. Систему очередей Gearman.
Потенциальные узкие места:
1. Неожиданное завершение работы задачи
- Проверка всех уровней эксепшнов
- Код Задач должен быть хорошо оттестирован
- Хранение статуса операций, необходимых задачам в отдельном месте
1. Неожиданное завершение работы Worker процесса
- Использование утилиты, управляющей процессами (хороший пример
Supervisor)
[program:worker]
command=/usr/bin/php /var/www/worker.php
process_name=%(program_name)s_%(process_num)02d
numprocs=10
directory=/var/www/worker
stdout_logfile=/var/log/worker.log
autostart=true
autorestart=true
user=www-data
stopsignal=KILL
46. Систему очередей Gearman.
Потенциальные узкие места:
1. Неожиданное завершение работы задачи
- Проверка всех уровней эксепшнов
- Код Задач должен быть хорошо оттестирован
- Хранение статуса операций, необходимых задачам в отдельном месте
1. Неожиданное завершение работы Worker процесса
- Использование утилиты, управляющей процессами (хороший пример
Supervisor)
1. Выход из строя Job Server
Мониторинг Job Server
Выбирать хранилище очередей не по умолчанию (mysql, sqllight, memcached, etc.)
1. при изменении кода воркера сам воркер не будет изменен
Использование скриптов автодеплоя в случае обновления кода воркера
48. Пример Реализации c использование
Yii2 + Gearman.
Пример Реализации c
использование Yii2 + Gearman.
49. Пример Реализации c использование
Yii2 + Gearman.
Архитектура Задач, архитектура на первом месте!
50. Пример Реализации c использование
Yii2 + Gearman.
Необходимые шаги:
1. Composer Yii2 extention
2. Add rows in config
3. write your worker
4. That’s it :-)
51. Пример Реализации c использование
Yii2 + Gearman.
Устанавливаем дополнения:
1. Filsh
https://github.com/Filsh/yii2-gearman
Single worker , used :
https://github.com/sinergi/gearman
2. OR, Shakura
https://github.com/shakura/yii2-gearman
(Multiple workers)