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

Ferramentas Laravel Notícias de tecnologia PHP Webdev
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:

  1. Teste de API simples : um endpoint de API básico do tipo "olá mundo". Sem middleware aplicado.

  1. 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/extensions
brew 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 .