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",Monitoring Kafka performance metrics, Datadog Engineering Blog, acessado em 23 de Maio de 2016/ 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ória O 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 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.

Aplicações O 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.

Arquitetura do Apache Kafka esquerda|miniaturadaimagem|Visão geral do 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:

Producer API– Permite que as aplicações publiquem fluxos de dados. Consumer API– Permite que a aplicação assine tópicos e processe o fluxo de dados. Connector API– Executa as API's de produtor e consumidor que podem vincular os tópicos para os aplicativos existentes. Streams API– Esta API converte os fluxos de entrada para um fluxo de saída e produz o resultado.

Referências

Categoria:Software de 2011 Categoria:Software livre Categoria:Plataforma Java