3 pontos por GN⁺ 2024-01-06 | 1 comentários | Compartilhar no WhatsApp

Origem

  • Em abril de 2023, foi tomada a decisão de aprender Rust.
  • Com base na experiência em sistemas distribuídos e mensageria, decidiu-se desenvolver uma plataforma de streaming de mensagens.
  • O objetivo era entender o funcionamento interno dos sistemas de mensageria e os trade-offs enfrentados pelos desenvolvedores.
  • Assim nasceu o Iggy.rs, com a meta de ser uma plataforma de streaming de mensagens focada em velocidade e leveza.

Projeto

  • O Iggy inicial usava o protocolo QUIC para oferecer funcionalidades básicas de troca de mensagens.
  • Por meio de prototipagem contínua e melhorias, foi implementado um servidor com suporte a escrita/leitura paralela e streams independentes.
  • Foram adicionados suporte aos protocolos TCP e HTTP, além de melhorias de desempenho com a otimização do mecanismo de sincronização de dados.
  • Benchmarks confirmaram alta taxa de transferência e baixa latência, levando à transformação em um projeto de longo prazo.

Equipe

  • O Iggy conta com uma equipe de cerca de 10 membros contribuindo em diferentes frentes.
  • Há participação em vários projetos, como o servidor principal, SDK, Web UI e CLI.
  • Desenvolvedores com experiências diversas participam voluntariamente, unidos pela paixão por programação.
  • A participação de contribuidores externos de várias partes do mundo aumentou a confiança no projeto.

Funcionalidades

  • Servidor de streaming de mensagens de alto desempenho, sustentável e baseado em log.
  • Alta taxa de transferência, baixa latência e uso previsível de recursos graças ao Rust como linguagem compilada.
  • Suporte a múltiplos streams, tópicos e partições, além de vários protocolos de transporte.
  • API RESTful, SDKs de cliente para várias linguagens e trabalho direto com dados binários.
  • Funcionalidades do servidor configuráveis, armazenamento de offsets de consumidores no servidor e suporte a vários métodos de polling de mensagens.
  • Grupos de consumidores para ordenação de mensagens e escalabilidade horizontal, além de expiração e deduplicação de mensagens.
  • Suporte a TLS em todos os protocolos de transporte, criptografia opcional de dados e suporte a cabeçalhos de mensagens.
  • CLI integrada e aplicativo de benchmarking para gerenciamento do servidor de streaming, com distribuição em binário único.

Roadmap

  • Após aparecer na página de tendências do GitHub, começaram as discussões com os usuários sobre adição de funcionalidades.
  • O objetivo é melhorar desempenho e confiabilidade por meio de clustering, I/O de baixo nível e arquitetura de thread por núcleo.
  • Há experimentos com o mecanismo de consenso Raft, melhorias nas operações de I/O com io_uring e planos de usar o runtime monoio.

Futuro

  • O objetivo é criar uma plataforma de streaming de mensagens de propósito geral e desafiar os limites do sistema operacional e do hardware.
  • Há planos de oferecer uma plataforma unificada e fácil de usar, com suporte a várias linguagens de programação, CLI e Web UI.
  • O projeto pretende evoluir com base no feedback e nas ideias da comunidade.

GN⁺ Opinião

  • O Iggy.rs é uma plataforma de streaming de mensagens baseada em Rust, com foco em alto desempenho e baixa latência.
  • Como projeto open source, continua crescendo com a participação voluntária e as contribuições de desenvolvedores do mundo todo.
  • Sua meta ambiciosa de superar os limites de desempenho de sistemas distribuídos por meio de tecnologias inovadoras como clustering, otimização de I/O de baixo nível e arquitetura de thread por núcleo é interessante e faz dele um projeto muito valioso para quem se interessa por essa área.

1 comentários

 
GN⁺ 2024-01-06
Comentários no Hacker News
  • O que primeiro despertou meu interesse por software não foi dinheiro, mas o ideal de pessoas se esforçando por um objetivo comum. Desejo boa sorte ao projeto e espero que comparações com as alternativas ajudem a entender melhor onde ele se posiciona.
  • Gostei da postagem no blog, e o autor parece ser um líder de projeto humilde, honesto e construtivo. Desejo boa sorte ao projeto.
  • Parece ser um concorrente direto do JetStream, e mostra um progresso impressionante com menos de um ano de trabalho.
  • Foi um post que me fez pensar novamente nas origens do Fluvio: uma pequena equipe com uma longa relação com aplicações centradas em dados em várias áreas ao longo de décadas, empolgada com streaming de dados usando Rust e WebAssembly.
  • Não está claro como ele se compara ao Kafka e ao Fluvio (outro concorrente do Kafka escrito em Rust), mas também pode ser uma fila de mensagens como o RabbitMQ.
  • Há alguns anos, fiz algo parecido com um amigo em Go.
  • Quero experimentar depois de aprender Rust, e gosto da estética do site.
  • O projeto é interessante, mas antes de testar preciso entender como executar várias instâncias do servidor e como funciona a interação do sistema de arquivos entre os servidores.
  • Em comparação com o streaming do KeyDB, penso em uma persistência mais robusta como vantagem.
  • Surpreende a escolha do monoio. Exige usar o compilador nightly, e não acho que seja uma boa escolha para a manutenção do projeto.