Neste artigo
Anúncio de lançamento
Execução Lua atómica, deduplicação nativa por pertença, telemetria de progresso estruturada e injeção de dependências estrita. Descubra como o Sukarix oferece a potência de uma solução empresarial sem o peso de uma framework, e como alimenta o nosso pipeline em tempo real BigBlueButton Analytics.
Na construção de sistemas backend críticos e de pipelines de streaming em tempo real, cada milissegundo e cada megabyte de RAM contam. Embora o PHP moderno se tenha tornado uma referência em tipagem e velocidade, muitas frameworks PHP populares seguiram o caminho oposto: acumulam árvores de herança profundas, um custo elevado de reflexão, grafos de dependências inchados e arranques de vários megabytes que sufocam os workers CLI de longa duração.
Na RIADVICE, construímos arquiteturas de elevada concorrência para plataformas de salas de aula virtuais, motores de análise em tempo real e balanceadores de carga de alta disponibilidade. Precisávamos de uma framework que juntasse a velocidade e a simplicidade das microframeworks à estrutura de nível empresarial exigida por aplicações empresariais complexas.
Essa framework é o Sukarix. Temos hoje o orgulho de anunciar o lançamento do Sukarix 0.4.0, que traz um motor de filas robusto, assente em Redis, concebido especificamente para cargas de trabalho em pipelines de várias etapas.
Porquê o Sukarix? Nascido de desafios reais de produção
O Sukarix não foi concebido como um exercício académico. É o resultado direto de anos de engenharia testada no terreno, em ambientes de produção com tráfego elevado: tratamento de milhões de eventos de telemetria WebRTC, migrações contínuas de bases de dados e encaminhamento de chamadas de API através de proxies inversos sob carga elevada.
Construído sobre o núcleo ultrarrápido da Fat-Free Framework (F3), o Sukarix mantém o encaminhamento extremamente rápido e a reduzida pegada de memória da F3, acrescentando o essencial de uma solução empresarial moderna:
- Arquitetura moderna PHP 8.4+ e 8.5+: segurança de tipos completa, tipagem estrita e um design orientado a objetos limpo.
- Injeção de dependências (DI) e IoC sem excessos: inicialização dinâmica de processadores baseada em traits, sem os estrangulamentos da reflexão.
- Ferramentas de produção integradas: integração de primeira linha com Monolog, depuração com Tracy, migrações de bases de dados com Phinx e o conjunto de testes Statera.
- Estabilidade em vez de mudanças constantes: concebido para que as atualizações exijam alterações mínimas, protegendo as cargas de produção de redesenhos de API incompatíveis.
| Funcionalidade / Métrica | Sukarix 0.4.0 | Frameworks pesadas (Laravel / Symfony) | Microframeworks simples |
|---|---|---|---|
| Pegada de memória (CLI / Web) | Muito reduzida (~2-4 MB) | Elevada (~15-35 MB) | Muito reduzida (~2-3 MB) |
| Velocidade de arranque e encaminhamento | Execução abaixo do milissegundo | Maior sobrecarga (pilha de middleware complexa) | Execução abaixo do milissegundo |
| Motor de filas para pipelines | Lua atómico nativo + deduplicação | Abstração de filas genérica (sobrecarga elevada) | Nenhum (implementação manual) |
| Utilitários empresariais (migrações, DI, registos) | Incluídos e pré-configurados | Incluídos | Inexistentes / montagem fragmentada necessária |
| Complexidade do grafo de dependências | Enxuto, pacotes PSR selecionados | Dezenas de dependências profundas | Mínima |
Novidades do Sukarix 0.4.0: a atualização das filas
O Sukarix 0.4.0 introduz o namespace Sukarix\Queue, uma arquitetura de filas FIFO Redis de alto débito, concebida de raiz e otimizada para pipelines de processamento assíncrono em várias etapas.
Execução Lua atómica e deduplicação automática
As filas Redis padrão baseadas em listas estão sujeitas a condições de corrida ou a entradas duplicadas quando um worker falha. O Sukarix resolve este problema associando as listas FIFO Redis a conjuntos de controlo de pertença, executados através de scripts Lua Redis atómicos. Adicionar um elemento que já está na fila não tem qualquer efeito, e um worker interrompido a meio de uma operação nunca deixa o estado dividido de forma incoerente.
Contagem de tentativas por elemento, sem imposições
Em vez de impor limites rígidos de novas tentativas ou de dead-letter no motor de filas, o Sukarix disponibiliza contadores de tentativas por elemento em hashes Redis. A sua lógica de negócio mantém total liberdade para decidir se uma tarefa falhada deve ser repetida de imediato, adiada, posta de parte para análise ou enviada para dead-letter.
Trait HasQueue com inicialização fail-fast
Os serviços consumidores injetam facilmente as capacidades de fila através do trait de comportamento HasQueue. Se o serviço de filas não estiver registado no injetor, o Sukarix lança uma \LogicException clara no arranque, evitando falhas difíceis de detetar por ponteiros nulos durante a execução em produção.
QueueProgressLogger estruturado e registos na consola CLI
O Sukarix 0.4.0 acrescenta registos estruturados e legíveis por máquina para os eventos do ciclo de vida das filas (início, progresso por lote, débito e conclusão). O conteúdo das mensagens é ocultado (por exemplo, registado como array[3]) para garantir que nenhum dado sensível de clientes chega aos sistemas de registo. Além disso, o LogWriter passa a oferecer registos coloridos opcionais na consola, para monitorizar os workers CLI em tempo real.
Exemplo de código: o pipeline de workers em ação
// Worker implementation with HasQueue trait
namespace App\Workers;
use Sukarix\Behaviours\HasQueue;
use Sukarix\Behaviours\LogWriter;
use Sukarix\Core\Processor;
class EventIngestionWorker
{
use HasQueue, LogWriter;
public function __construct()
{
Processor::instance()->initialize($this);
}
public function consume(): void
{
while (null !== ($payload = $this->queueService->popFromQueue('queue.events.pending'))) {
try {
$this->processEvent($payload);
$this->queueService->clearAttempts('queue.events.failed', $payload);
} catch (\Throwable $e) {
$attempts = $this->queueService->incrementAttempts('queue.events.failed', $payload);
$this->logger->error('Failed processing item', ['attempts' => $attempts, 'error' => $e->getMessage()]);
}
}
}
}Em produção: o motor do pipeline em tempo real BigBlueButton Analytics
Como se comporta o Sukarix 0.4.0 sob uma carga empresarial real? Basta olhar para a plataforma BigBlueButton Analytics da RIADVICE, o nosso motor de análise em tempo real para o BigBlueButton.
As infraestruturas de salas de aula virtuais de grande escala geram um volume enorme de dados de eventos detalhados, com milhões de eventos simultâneos: fluxos de áudio e vídeo WebRTC, entradas e saídas de participantes, mensagens de chat, interações em sondagens, traços desenhados no quadro branco, mudanças de diapositivo e muito mais. Ingerir estes dados de forma fiável, sem ficar atrás das aulas em direto, exige um pipeline de streaming à prova de falhas.
Nos bastidores, as filas Redis do Sukarix 0.4.0 coordenam a transformação de pesados fluxos de eventos em bruto em conjuntos de dados estruturados, guardados numa base de dados de séries temporais, com painéis disponibilizados através do Apache Superset. O pipeline beneficia diretamente de:
- Nenhuma ingestão duplicada: a deduplicação por pertença evita contar métricas a dobrar quando os servidores enviam impulsos de sincronização redundantes.
- Recuperação imediata dos workers: as transações Redis atómicas garantem que os reinícios de workers ou o escalonamento de nós nunca corrompem os índices das filas nem perdem eventos das reuniões.
- Enorme eficiência de recursos: como os workers CLI do Sukarix consomem uma fração da RAM das frameworks alternativas, dezenas de workers de filas em simultâneo correm sem dificuldade em máquinas virtuais modestas.
- Observabilidade sob carga elevada: o
QueueProgressLoggerestruturado dá visibilidade imediata sobre o débito dos workers, a conclusão dos lotes e o diagnóstico de erros, diretamente nos coletores de registos.
Faça crescer a sua infraestrutura BigBlueButton com a RIADVICE
Quer precise de painéis em tempo real BigBlueButton Analytics prontos a usar para a sua universidade ou organização, de pipelines de processamento de dados de alto desempenho à medida, ou de consultoria de arquitetura para clusters BigBlueButton de grande escala, a RIADVICE está aqui para ajudar.
Agendar uma demonstração / consulta
Atualizar para o Sukarix 0.4.0
O Sukarix 0.4.0 é totalmente aditivo e não introduz qualquer alteração incompatível nas aplicações existentes. Se utiliza o Sukarix 0.3.x com PHP 8.4+, pode atualizar de imediato através do Composer:
composer update sukarix/sukarix
Consulte as notas de lançamento completas nas Sukarix Github Discussions.
Etiquetas: Sukarix, PHP 8.5, framework PHP, filas Redis, processamento assíncrono, BigBlueButton, Learning Analytics, EdTech, pipeline de dados em tempo real, RIADVICE, PHP de alto desempenho, código aberto.





