Apache Kafka
Desenvolvedor | Apache Software Foundation |
Plataforma | Multiplataforma |
Modelo do desenvolvimento | Software Livre |
Lançamento | janeiro de 2011 |
Versão estável | 2.8.0 (19 de abril de 2021 | )
Escrito em | Scala, Java |
Sistema operacional | Multi-plataforma |
Gênero(s) | Processamento de streams, Message broker |
Licença | Apache License 2.0 |
Página oficial | 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ória
[editar | editar código-fonte]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[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ções
[editar | editar código-fonte]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.[4]
Arquitetura do Apache Kafka
[editar | editar código-fonte]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
[editar | editar código-fonte]- ↑ Monitoring Kafka performance metrics, Datadog Engineering Blog, acessado em 23 de Maio de 2016/
- ↑ Primack, Dan. «LinkedIn engineers spin out to launch 'Kafka' startup Confluent». fortune.com. Consultado em 2 de outubro de 2015
- ↑ «What is the relation between Kafka, the writer, and Apache Kafka, the distributed messaging system?». Quora. Consultado em 12 de junho de 2017
- ↑ «What is Apache Kafka». confluent.io. Consultado em 4 de maio de 2018