Clone do Kafka

Desafio avançado 🐓

Problema

Nesse desafio você deve criar um servidor TCP que aceita conexões e funciona como um sistema de streaming como o Kafka. Clientes conectados nesse servidor podem enviar e consumir mensagens de diferentes tópicos (filas).

Requisitos

  •   Use os seguintes conceitos:
  •           Uma mensagem é uma sequência de bytes qualquer
  •           Um tópico é um lugar que contém mensagens ordenadas como se fosse uma fila
  •           Um publisher é um programa que insere mensagens num tópico
  •           Um consumer é um programa com um nome/id único e que lê mensagens de um tópico
  •   Crie um servidor TCP que recebe um comando para publicar uma mensagem num tópico
  •   Suporte outro comando para um consumer abrir uma conexao com o servidor, ler todas as mensagens de um tópico e esperar por novas mensagens
  •   Se você desligar o consumer e ligá-lo novamente (mesmo nome e tópico), ele vai continuar lendo as mensagens de onde parou
  •   Qualquer conceito kafka não descrito aqui não é necessário
  •   Você pode usar o programa netcat para interagir com o servidor ou implementar seu próprio cliente tcp em go, essa parte é opcional

O que você vai aprender

  •   Golang
  •   Concorrência/paralelismo (goroutines)
  •   Graceful shutdown

Inspirado em desafios de empresas como

Plano Pro

Tenho acesso a todos os conteúdos privados com nosso plano Pro.

Modo Treino

Em dúvida em por onde começar a resolver esse desafio? No modo treino te ajudamos com um passo a passo para você criar sua própria solução.