Apache Kafka
Apache Kafka é uma plataforma open-source de processamento de streams desenvolvida pela Apache Software Foundation, escrita em Scala e Java. O projeto tem como objetivo fornecer uma plataforma unificada, de alta capacidade e baixa latência para tratamento de dados em tempo real. Sua camada de armazenamento é, essencialmente, uma "fila de mensagens de publishers/subscribers maciçamente escalável projetada como um log de transações distribuído",[1] tornando-o altamente valioso para infra-estruturas corporativas que processam transmissão de dados. Além disso, Kafka se conecta a sistemas externos (para importação/exportação de dados) através do Kafka Connect e ainda fornece o Kafka Streams, uma biblioteca Java de processamento de fluxos. HistóriaO Apache Kafka foi originalmente desenvolvido pelo LinkedIn, e teve, posteriormente, seu código aberto no início de 2011. Em novembro de 2014, Jun Rao, Jay Kreps, e Neha Narkhede, que trabalharam com o Kafka no LinkedIn, criaram uma nova empresa chamada Confluent[2] com foco em Kafka. De acordo com um post no Quora de 2014, Kreps escolheu o nome do software, em referência ao autor Franz Kafka, porque ele é "um sistema otimizado para escrever", e ele gostava do trabalho de Kafka.[3] AplicaçõesO Apache Kafka é baseado no commit log, ele permite que os usuários inscrevam-se e publiquem dados para qualquer número de sistemas ou aplicações em tempo real. Exemplos de aplicações incluem o gerenciamento de correspondência entre passageiros e um condutor no Uber, fornecer análises e métricas em tempo real, além de realizar inúmeros serviços em tempo real para todo o LinkedIn.[4] Arquitetura do Apache Kafka![]() O Kafka armazena mensagens por chave-valor que provêm de inúmeros processos arbitrários chamados de "produtores". Os dados podem, assim, ser particionados em diferentes "partições" e diferentes "tópicos". Dentro de uma partição, as mensagens são estritamente ordenadas pela sua posição (a posição de uma mensagem dentro de uma partição), e indexados e armazenados juntamente com suas data e hora. Outros processos chamados de "consumidores", podem ler mensagens de partições. Para o processamento de fluxos, o Kafka oferece a Streams API que permite criar aplicações Java que consomem dados do Kafka e escrevem esses resultados novamente no Kafka. O Apache Kafka também funciona com o processamento de fluxos de sistemas externos, tais como o Apache Apex, Apache Flink, Apache Spark, e o Apache Storm. São quatro as principais APIs no Kafka:
Referências
|