Apresentando o Hypervel: um framework de corrotina para artesãos Laravel

Hypervel é um framework PHP de alto desempenho inspirado no Laravel, que oferece suporte nativo a corrotinas para desenvolvedores que criam aplicações de alta simultaneidade e uso intensivo de E/S. Criado por Albert Chen, é um framework não oficial que adota a elegante experiência de desenvolvimento do Laravel, aproveitando os recursos assíncronos do Swoole.
Já que o pacote Octane é mantido pela equipe oficial, por que precisamos de uma nova estrutura? Pode não parecer sensato reinventar a roda, não é?
Por que não Octane?
Embora o Octane acelere impressionantemente o desempenho do Laravel ao executar o aplicativo no ciclo de vida longo, o que elimina o custo de inicialização do framework a cada solicitação, ele não consegue resolver problemas de desempenho causados pelo bloqueio de E/S.
Por exemplo, imagine criar um chatbot com IA usando o Laravel. Digamos que cada API de conversação leve apenas de 3 a 5 segundos para responder. Se você executar seu aplicativo Octane com 10 workers, quantas requisições seu aplicativo poderá processar simultaneamente se houver 100 requisições simultâneas? O QPS (Consultas por Segundo) do seu aplicativo será inferior a 3. Por que isso está acontecendo?
Isso ocorre porque o Octane não fornece recursos de E/S não bloqueantes para o Laravel. Todos os workers permanecem bloqueados até o final dessas requisições de E/S. Além disso, devido a restrições de compatibilidade com versões anteriores do framework atual, o Laravel tem menos possibilidade de oferecer suporte a recursos de corrotina em um futuro próximo.
Você pode consultar esta edição para obter mais detalhes.
Características do Hypervel
O Hypervel é construído sobre a extensão Swoole, e todos os componentes suportam corrotinas de fábrica. O Hypervel porta muitos pacotes principais do Laravel, mantendo padrões de uso familiares, tornando-o imediatamente acessível aos desenvolvedores Laravel.
Este framework combina a experiência de desenvolvimento elegante e expressiva do Laravel com os poderosos benefícios de desempenho da programação baseada em corrotinas. Se você é um desenvolvedor Laravel, se sentirá em casa com este framework, que exige uma curva de aprendizado mínima.
Você pode encontrar exemplos de código mais práticos em Codificação como no Laravel .
Aqui estão alguns recursos principais:
- Experiência de desenvolvimento extremamente semelhante ao Laravel.
- Desempenho extremamente alto, com QPS 10 vezes maior que o Octane em cenários sem E/S e centenas de vezes maior em cenários com uso intensivo de E/S.
- Suporte a corrotinas pronto para uso, com até mesmo as funções de E/S integradas do PHP sendo automaticamente conectadas para oferecer suporte a corrotinas.
- Suporte para pools de objetos e pools de conexão, como banco de dados, redis e clientes http
- Comunicação bidirecional perfeita com seus projetos Laravel existentes por meio de Cache , Lock e Queue .
- O suporte a corrotinas não se limita ao tratamento de requisições HTTP. Filas e Agendamentos também podem utilizar corrotinas, permitindo que um único processo alcance a simultaneidade que exigiria centenas de workers no Laravel.
Esta é uma escolha ideal para criar microsserviços, gateways de API e aplicativos de alta simultaneidade, onde frameworks PHP tradicionais frequentemente encontram restrições de desempenho.
Corrotinas
Corrotinas são funções que podem pausar sua execução e posteriormente retomar de onde pararam, mantendo seu estado entre as pausas. Pense nelas como funções com múltiplos pontos de entrada e saída.
Quando uma corrotina encontra uma operação que normalmente bloquearia (como aguardar dados da rede), em vez de bloquear o programa inteiro, ela devolve o controle a um escalonador. O escalonador pode então executar outras corrotinas até que a operação de bloqueio seja concluída.
No Hypervel, componentes de E/S, como conexões de banco de dados, operações de arquivo, clientes HTTP e até mesmo todas as funções de E/S nativas do PHP, funcionam como corrotinas. A sobrecarga de cada corrotina é extremamente leve em comparação com processos ou threads, tornando-as ideais para operações de E/S simultâneas. Essa arquitetura permite que o Hypervel tenha um desempenho excelente em cenários com uso intensivo de E/S.
Você pode aprender mais sobre como a corrotina funciona no Hypervel na seção Coroutine da documentação oficial.
Além disso, corrotinas não são suportadas apenas no tratamento de requisições. No Laravel, a única maneira de melhorar a simultaneidade em filas ou no agendamento de tarefas é aumentar o número de workers na máquina. Mas no Hypervel, você pode executar vários jobs simultaneamente com o agendamento de corrotinas. Isso significa que um processo worker pode atuar como centenas de workers tradicionais para jobs vinculados a E/S no Laravel.
Referência
Os testes de benchmark abrangem dois cenários distintos para avaliar o desempenho em diferentes condições:
- Teste de API simples : um endpoint de API básico do tipo "olá mundo". Sem middleware aplicado.
- Teste de espera de E/S simulado : durma por um segundo para simular o tempo de espera de E/S
O número QPS do Laravel Octane é próximo de 8, mas como ele difere significativamente dos números do Hypervel, ele aparece dessa forma quando gerado no gráfico.
Você pode ver o benchmark para obter informações mais detalhadas.
Pré-requisitos
O Hypervel possui alguns requisitos de sistema. Você deve garantir que seu servidor web tenha as seguintes versões mínimas do PHP e extensões:
- PHP >= 8.2
- Extensão Swoole PHP >= 5.1
- Extensão PHP Pcntl
Você pode instalar a extensão Swoole via PECL:
pecl install swoole
Usuários de Mac também podem instalar o Swoole via brew:
brew tap shivammathur/extensionsbrew install shivammathur/extensions/swoole@8.3
O uso
shivammathur/extensions
pode ajudar a resolver problemas comuns ao instalar o swoole em ambientes Apple M1.
Para requisitos completos, você pode consultar os requisitos do servidor no site.
Instalação
Você pode criar um novo projeto Hypervel facilmente através do comando create-project do Composer:
composer create-project hypervel/hypervel example-app
Depois que o projeto for criado, inicie o servidor de desenvolvimento local do Hypervel usando
serve
o comando:
php artisan serve
Depois de iniciar o servidor HTTP, seu aplicativo estará acessível no seu navegador
http://localhost:9501
por padrão.
Conclusão
Sem dúvida, o Laravel é a melhor escolha para criar aplicativos web em muitos casos de uso, especialmente com sua comunidade madura e ecossistema rico.
No entanto, em alguns cenários de alta simultaneidade ou E/S intensiva, você pode definitivamente experimentar o Hypervel para obter desempenho ultra e aproveitar uma experiência de desenvolvimento semelhante ao Laravel ao mesmo tempo.
Você pode começar a usar o Hypervel acessando o site oficial .