apache kafka - tutorial - Kafka: API do consumidor versus API do Streams
kafka streams tutorial (1)
Atualização em 9 de abril de 2018 : Atualmente, você também pode usar o KSQL , o mecanismo SQL de streaming do Kafka, para processar seus dados no Kafka. O KSQL é construído sobre a API Streams do Kafka e também é fornecido com suporte de primeira classe para "fluxos" e "tabelas". Pense nisso como o irmão SQL do Kafka Streams, onde você não precisa escrever nenhum código de programação em Java ou Scala.
qual é a diferença entre a API do consumidor e a API do Streams?
A API Streams da Kafka ( https://kafka.apache.org/documentation/streams/ ) é construída sobre os clientes produtores e consumidores da Kafka. É significativamente mais poderoso e também mais expressivo que o cliente consumidor Kafka. Aqui estão alguns dos recursos da API Kafka Streams:
Suporta semântica de processamento exatamente uma vez (Kafka versões 0.11+)
Oferece suporte ao processamento com estado de tolerância a falhas (bem como sem estado, é claro), incluindo joins streaming, aggregations e windowing . Em outras palavras, ele suporta o gerenciamento imediato do estado de processamento do seu aplicativo.
Oferece suporte ao processamento no horário do evento , bem como no processamento com base no tempo de processamento e no tempo de ingestão
Possui suporte de primeira classe para fluxos e tabelas , onde é o processamento do fluxo que atende aos bancos de dados; na prática, a maioria dos aplicativos de processamento de fluxo precisa dos fluxos E das tabelas para implementar seus respectivos casos de uso; portanto, se uma tecnologia de processamento de fluxo não possui uma das duas abstrações (por exemplo, não há suporte para tabelas), você está bloqueado ou deve implementar manualmente essa funcionalidade (boa sorte com isso...)
Oferece suporte a consultas interativas (também chamadas de 'estado consultável') para expor os resultados de processamento mais recentes a outros aplicativos e serviços
É mais expressivo: é fornecido com (1) um DSL estilo de programação funcional com operações como map , filter , reduce e (2) uma API de processador de estilo imperativa para, por exemplo, executar o processamento de eventos complexos (CEP) e (3) você pode até combinar a DSL e a API do processador.
Consulte http://docs.confluent.io/current/streams/introduction.html para obter uma introdução mais detalhada, mas ainda de alto nível, à API Kafka Streams, que também deve ajudá-lo a entender as diferenças para o consumidor Kafka de nível inferior. cliente. Há também um tutorial baseado no Docker para a API do Kafka Streams , sobre o qual escrevi no início desta semana.
Então, como a API do Kafka Streams é diferente, pois ela também consome ou produz mensagens para o Kafka?
Sim, a API do Kafka Streams pode ler dados e gravar dados no Kafka.
e por que é necessário, pois podemos escrever nosso próprio aplicativo de consumidor usando a API do consumidor e processá-los conforme necessário ou enviá-los para o Spark a partir do aplicativo de consumidor?
Sim, você pode escrever seu próprio aplicativo de consumidor - como mencionei, a API do Kafka Streams usa o próprio cliente do consumidor Kafka (mais o cliente produtor) - mas você teria que implementar manualmente todos os recursos exclusivos que a API do Streams fornece . Veja a lista acima para tudo o que você recebe "de graça". Portanto, é uma circunstância bastante rara o usuário escolher o cliente consumidor de baixo nível em vez da API Kafka Streams mais poderosa.
Recentemente, comecei a aprender Kafka e acabei com essas perguntas.
Qual é a diferença entre Consumer e Stream? Para mim, se alguma ferramenta / aplicativo consumir mensagens do Kafka é um consumidor no mundo Kafka.
Como o Stream é diferente, pois isso também consome ou produz mensagens para Kafka? e por que é necessário, pois podemos escrever nosso próprio aplicativo de consumidor usando a API do consumidor e processá-los conforme necessário ou enviá-los para o Spark a partir do aplicativo de consumidor?
Eu fiz o Google nisso, mas não obtive boas respostas para isso. Desculpe se esta pergunta é muito trivial.
use tutorial streams start quick org kafka for downloads apache-kafka kafka-consumer-api apache-kafka-streams