Hypervel — це високопродуктивний PHP-фреймворк, натхнений Laravel, який пропонує нативну підтримку корутин для розробників, що створюють додатки з високою конкуренцією та інтенсивним введенням/виведенням. Фреймворк був створений Альбертом Ченом і є неофіційним рішенням, яке зберігає елегантний підхід до розробки Laravel, поєднуючи його з асинхронними можливостями Swoole.
Оскільки існує пакет Octane, підтримуваний офіційною командою, чи потрібно нам нове рішення? Це може видатися недоцільним, чи не так?
Octane суттєво покращує продуктивність Laravel, запускаючи додаток у довготривалому циклі життя, що усуває витрати на завантаження фреймворку при кожному запиті. Проте він не вирішує проблеми продуктивності, викликані блокуючим введенням/виведенням.
Наприклад, уявіть, що ви створюєте чат-бота на базі штучного інтелекту з використанням Laravel. Нехай кожен запит на API відповідає всього за 3-5 секунд. Якщо ви запустите свій Octane додаток з 10 робітниками, скільки запитів ваша програма зможе обробити одночасно при 100 конкурентних запитах? Кількість запитів за секунду (QPS) буде менше 3. Чому так відбувається?
Це відбувається через те, що Octane не надає можливостей неблокуючого введення/виведення в Laravel. Усі робітники залишаються заблокованими, поки не завершаться ці запити. Крім того, через обмеження сумісності з попередніми версіями Laravel менш ймовірно зможе підтримувати функції корутин у найближчому майбутньому.
Детальнішу інформацію можна знайти в цій справі.
Hypervel побудований на розширенні Swoole, і всі компоненти підтримують корутини з готовністю. Фреймворк адаптує багато основних пакетів з Laravel, зберігаючи знайомі шаблони використання, що робить його відразу зрозумілим для розробників Laravel.
Цей фреймворк поєднує елегантний і виразний досвід розробки Laravel з потужними перевагами продуктивності корутинного програмування. Якщо ви розробник Laravel, ви одразу відчуєте себе як вдома з цим фреймворком — навчання займе мінімум часу.
Вашій увазі практичні приклади коду в Coding Like in Laravel.
Ось деякі ключові особливості:
Це ідеальний вибір для створення мікросервісів, API-шлюзів та додатків з високою конкуренцією, де традиційні PHP-фреймворки часто стикаються з обмеженнями продуктивності.
Коритини — це функції, які можуть призупиняти виконання і пізніше продовжувати з того місця, де зупинилися, зберігаючи свій стан між паузами. Уявіть, що це функції з кількома точками входу та виходу.
Коли кортина стикається з операцією, яка зазвичай блокувала б (наприклад, очікуючи дані з мережі), вона не блокує всю програму, а повертає контроль планувальнику. Той може виконати інші кортини, поки блокуюча операція не завершиться.
У Hypervel компоненти введення/виведення, такі як з'єднання з базами даних, файлові операції, HTTP-клієнти, а також усі вбудовані I/O-функції PHP працюють як корутини. Витрати на кожну корутину надзвичайно легкі в порівнянні з процесами чи потоками, що робить їх ідеальними для конкурентних I/O-операцій. Ця архітектура дозволяє Hypervel демонструвати чудову продуктивність у сценаріях з інтенсивним введенням/виведенням.
Детальніше про роботу корутин у Hypervel можна дізнатися в розділі Коритини офіційної документації.
Більше того, підтримка корутин не обмежується лише обробкою запитів. У Laravel єдиний спосіб покращити конкурентність у чергах або плануванні завдань — це збільшити кількість робітників на машині. Однак у Hypervel ви можете запускати декілька завдань одночасно під керівництвом корутин. Це означає, що один робочий процес може діяти як сотні традиційних робітників для задач, пов'язаних із введенням/виведенням у Laravel.
Тести на бенчмарк охоплюють два різних сценарії для оцінки продуктивності за різних умов:
Показник QPS для Laravel Octane близький до 8, але через його значну різницю з показниками Hypervel це виглядає таким чином у графіку.
Для більш детальної інформації ви можете переглянути бенчмарки.
Hypervel має кілька системних вимог. Переконайтеся, що ваш веб-сервер відповідає наступним мінімальним вимогам до версії PHP та розширень:
Ви можете встановити розширення Swoole через PECL:
pecl install swoole
Користувачі Mac також можуть встановити Swoole через Homebrew:
brew tap shivammathur/extensions
brew install shivammathur/extensions/swoole@8.3
Використання
shivammathur/extensions
може допомогти вам вирішити поширені проблеми під час установки Swoole на Apple M1.
Для повного списку вимог зверніться до системних вимог на сайті.
Ви можете легко створити новий проект Hypervel за допомогою команди Composer create-project:
composer create-project hypervel/hypervel example-app
Після створення проекту запустіть локальний сервер розробки Hypervel за допомогою команди serve
:
php artisan serve
Після запуску HTTP-сервера ваше додаток буде доступним у веб-браузері за адресою http://localhost:9501
за замовчуванням.
Безумовно, Laravel є найкращим вибором для створення веб-додатків у багатьох випадках завдяки своїй зрілій спільноті та багатій екосистемі.
Однак у деяких сценаріях з високою конкуренцією або інтенсивним введенням/виведенням ви абсолютно можете спробувати Hypervel для досягнення ультра продуктивності та насолодитися досвідом розробки, схожим на Laravel.
Розпочати роботу з Hypervel можна, відвідавши офіційний сайт