Готовый перевод Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Часть 2: Основы

Вторая часть этой книги знакомит с историей создания Swoole PHP. Какие проблемы решаются не очень хорошо с традиционным PHP-FPM без сохранения состояния и моделью блокирующего ввода-вывода.

Зачем нужна сторонняя библиотека? Какие у нас есть проблемы? Это лучшее решение? Мы должны задать себе эти вопросы, прежде чем тратить время и ресурсы на изучение и освоение новой библиотеки.

Nginx и PHP-FPM - это шаблон для большинства веб-проектов PHP сегодня.

Немного истории PHP. До PHP-FPM популярным решением был веб-сервер Apache httpd в связке с модулем mod_php. Начиная с Fedora 27, когда mod_php перестал устанавливаться по умолчанию, используется php-fpm. А Fedora 33 прекратила поддержку mod_php.

И PHP-FPM, и mod_php не сохраняют состояние подключения. Это сделало PHP одним из самых популярных языков веб-программирования, а также первым языком некоторых разработчиков.

Архитектура без сохранения состояния также является самой популярной веб-архитектурой последние 10 лет. Большинство современного программного обеспечения построено без сохранения состояния, поскольку масштабирование является важным фактором. Архитектура без сохранения состояния более масштабируема, легко расширяема добавлением большего количества серверов в случаях, когда ваш трафик растет. Разработчики делают меньше ошибок и не думают об утечках памяти. Создавать приложения без сохранения состояния проще; разработчикам не нужно слишком много думать о том, как управлять состояниями на уровне приложения.

Как и во многих других задачах, не существует одного ответа, подходящего для решения всех проблем. Архитектура без сохранения состояния - не единственно правильное решение, и у нее есть недостатки, которые мы обсудим в другом разделе.

Сравним приложения без сохранения состояния с приложениями, хранящими состояния во внешнем хранилище в базе данных или кеше. Приложения с отслеживанием состояния сохраняют некоторые состояния в приложении и повторно используют их для других запросов. По своей природе PHP-FPM не может сохранять состояния в приложении, вам нужно полагаться на локальные кеши, такие как Memcache или другое удаленное хранилище кешей.

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

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

Это одна из причин, почему были созданы PHP-решения с отслеживанием состояния, такие как Swoole PHP.

Переведено на Нотабеноиде
http://notabenoid.org/book/81342/496677

Переводчики: bubenok

Настройки

Готово:

100.00% КП = 1.0