Fila de tarefas distribuída e tolerante a falhas
- O Hatchet permite projetar cargas de trabalho duráveis que substituem filas ou sistemas pub/sub tradicionais difíceis de gerenciar, recuperam-se de falhas e resolvem problemas como concorrência, justiça e limitação de taxa.
- Em vez de gerenciar sua própria fila de tarefas ou sistema pub/sub, você pode usar o Hatchet para distribuir funções entre uma série de workers com configuração ou infraestrutura mínimas.
Vantagens do Hatchet
- Agendamento de latência ultrabaixa e alto throughput
- O Hatchet é construído sobre uma fila de baixa latência com tempo médio de início de
25ms, oferecendo um equilíbrio ideal entre capacidade de interação em tempo real e a confiabilidade exigida por cargas de trabalho de missão crítica.
- Concorrência, justiça e limitação de taxa
- Estratégias como FIFO, LIFO, Round Robin e Priority Queues são implementadas como estratégias nativas do Hatchet, contornando problemas comuns de escalabilidade com configuração mínima.
- Resiliência por design
- Com políticas de retry personalizadas e tratamento de erros integrado, o Hatchet garante que as tarefas possam se recuperar rapidamente de falhas transitórias.
Visibilidade e controle aprimorados
- Observabilidade
- Todas as execuções são totalmente pesquisáveis, permitindo identificar problemas rapidamente.
- Execução durável (prática)
- É possível reproduzir eventos e reiniciar manualmente uma execução a partir de uma etapa específica do workflow.
- Cron
- É possível agendar execuções de funções de forma recorrente.
- Agendamento único
- É possível agendar a execução de funções para uma data e hora específicas.
- Proteção contra picos
- Atenua aumentos repentinos de tráfego e executa apenas o que o sistema consegue processar.
- Streaming progressivo
- É possível assinar atualizações conforme o progresso dos workers em background.
Casos de uso de exemplo
- Justiça para IA generativa
- Você pode usar o Hatchet para distribuir solicitações de forma justa entre os workers, evitando que usuários mais ativos sobrecarreguem o sistema.
- Processamento em lote para indexação de documentos
- O Hatchet lida com processamento em lote em larga escala de documentos, imagens e outros dados, e pode retomar o trabalho a partir do meio em caso de falha.
- Orquestração de workflows para sistemas multimodais
- O Hatchet pode coordenar entradas e saídas multimodais e lidar com execuções completas no estilo DAG.
- Correção para processamento orientado a eventos
- Pode reagir a eventos externos ou internos do sistema e reproduzir eventos automaticamente.
Início rápido
- O Hatchet oferece suporte a SDKs open source para Python, Typescript e Go.
- Para começar, consulte a documentação do Hatchet ou veja o repositório de quickstart.
Repositórios de SDK
- O Hatchet fornece nativamente um SDK em Go.
- O SDK de Typescript também está disponível.
- Se houver problemas relacionados aos SDKs, você pode abrir uma issue no repositório correspondente.
Existe uma versão em nuvem gerenciada do Hatchet?
- Sim, durante o período beta eles estão oferecendo uma versão em nuvem para algumas empresas que ajudam a construir e moldar o produto.
Existe uma versão self-hosted do Hatchet?
- Sim, as instruções para os contêineres Docker open source para self-hosting podem ser encontradas na documentação.
Como isso se compara às alternativas? (Celery, BullMQ)
- Por que criar mais uma fila gerenciada?
- O objetivo era oferecer os benefícios de uma fila transacional completa, especialmente para execuções no estilo DAG, e há uma forte convicção de que o Postgres pode substituir a maioria dos casos de uso de filas.
- Muitas filas são baseadas em Redis e, se não houver cuidado, pode ocorrer perda de dados por OOM, mas com PG é possível evitar esse tipo de problema.
Problemas
- Você pode enviar bugs encontrados por meio das issues do Github.
- Como o projeto está em estágio inicial, é melhor entrar em contato primeiro pelo Discord antes de solicitar recursos complexos.
Se quiser contribuir
- Consulte a documentação de contribuição e informe no canal #contributing do Discord no que gostaria de trabalhar para ajudar a moldar a direção do projeto e facilitar a colaboração.
Opinião do GN⁺
- O Hatchet parece ser uma solução que reduz a complexidade do gerenciamento de filas de tarefas em sistemas distribuídos e oferece alta disponibilidade e tolerância a falhas, sendo especialmente útil para processamento de dados em larga escala e serviços em tempo real.
- Em comparação com outros sistemas de filas usados atualmente no mercado, a estabilidade e a escalabilidade obtidas com o uso de Postgres são vantagens dignas de nota.
- Ao adotar o Hatchet, é preciso considerar a compatibilidade com a infraestrutura existente, a migração de dados e a capacidade técnica da equipe.
- Os recursos avançados de visibilidade e controle oferecidos pelo Hatchet podem facilitar o monitoramento de desempenho e a resolução de problemas, reduzindo a carga de trabalho de desenvolvedores e equipes de operações.
- Como o Hatchet ainda está em fase beta, é necessária validação suficiente em termos de estabilidade e funcionalidade, além de testes adequados antes de aplicá-lo em sistemas de grande porte.
1 comentários
Comentários no Hacker News
graphile-worker, mas disse que ainda há requisitos não atendidos.SKIP LOCKEDetc., mas acabou trocando de emprego. Perguntou se o Hatchet seria adequado para esse caso de uso.