SlideShare uma empresa Scribd logo
1 de 83
conhecendo
Apache Kafka
Rafa Noronha, DevX | Marte | iti
Normandes Junior, DevX | Marte | Zup Innovation
#vemproiti
estamos contratando!
agenda
o apresentar a tecnologia
o seus muitos conceitos fundamentais
o compartilhar como usamos no iti
o alguns takeaways
alguns fatos sobre Apache Kafka
como Apache Kafka surgiu?
“nossa arquitetura não comtemplava
algo para lidar com o fluxo contínuo dos dados”
— Jay Kreps, former LinkedIn lead architect
hoje dezenas de milhares de organizações
usam Apache Kafka
incluindo mais de um terço das Fortune 500
três típicos casos de uso de Apache Kafka
cenário 1
activity tracking
cenário 2
mensageria
cenário 3
pipelines de dados
(transacionais e/ou telemetria)
stream processing
é mais um cenário típico
stream processing?
“event streams”
conjuntos de eventos, ou fluxos de eventos,
sem fim determinado
fluxos de eventos podem representar
qualquer atividade de negócio que nos interesse
“stream processing”
-> processar fluxos de eventos
-> transformar eventos de entrada em eventos de saída
alguns conceitos fundamentais do Apache Kafka
distributed event streaming platform
[pt-BR] plataforma distribuída de streaming de eventos
três principais capacidades
oferecidas pelo Apache Kafka
publicar e inscrever-se em streams de mensagens
(similar a outras ferramentas de mensageria)
armazenar streams de mensagens,
de maneira durável e tolerante a falhas
processar streams de mensagens sob demanda
três propriedades do Apache Kafka
roda como um cluster de
uma ou mais instâncias,
que podem abranger
múltiplos datacenters
um cluster Kafka armazena streams de mensagens
em categorias que chamamos de tópicos
mensagens possuem chave, valor e timestamp
quatro core APIs
do Apache Kafka
Producer API
permite que uma aplicação produza mensagens
em um ou mais tópicos
Consumer API
permite que uma aplicação inscreva-se em n tópicos
e processe o stream de mensagens produzido ali
Stream API
permite a uma aplicação agir como um stream processor,
transformando streams de entrada em streams de saída
Stream API
indicado para cenários de transformações mais complexas
que aquelas atendidas pelas Producer e Consumer APIs
Connector API
permite construir e reusar produtores e consumidores
que conectam tópicos a aplicações ou bases de dados
pré-existentes
Connector API
por exemplo, um conector que exporta mensagens
do Kafka para um s3 para fins de backup
Tópicos e Logs
um tópico é como uma categoria,
como o nome de um feed
mensagens produzidas sempre são destinadas
a um tópico
tópicos podem possuir n consumidores
(zero a muitos)
tópicos são mantidos como logs particionados
logs particionados são conjuntos de mensagens
sem fim pré-determinado
(mais mensagens podem ser adicionadas)
mensagens em um log particionado
são ordenadas e imutáveis
toda mensagem pertence a uma partição
toda mensagem possui um offset
(um identificador numérico que indica
a posição da mensagem em sua partição)
toda mensagem produzida é retida pelo cluster,
tendo ela sido consumida ou não
o período de retenção de uma mensagem
pode ser configurado por tópico
partições permitem escalar horizontalmente
o armazenamento de um log
partições também funcionam como
unidade de paralelismo
o consumo de um tópico sempre é arranjado
em grupos de consumidores
cada grupo de consumidores
possui offsets independentes para o consumo
das partições de um tópico
um grupo de consumidores pode ter
uma quantidade de consumidores não ociosos
menor ou igual ao número de partições do tópico
quantas e quais partições cada consumidor recebe
é definido dinamicamente pelo protocolo do Kafka
Réplicas
para fins de tolerância a falha,
cada partição é replicada
para número configurável de servidores
cada partição possui um servidor “leader”
e zero ou mais servidores “followers”
garantias oferecidas pelo Apache Kafka
mensagens produzidas serão escritas
conforme sua ordem de envio
um consumidor enxerga as mensagens
conforme sua ordem de armazenamento no log
para um tópico com fator de replicação N,
são toleradas até N-1 falhas de servidor,
sem perder mensagens “commitadas” ao log
como Apache Kafka é usado atualmente no iti?
em cenários de mensageria
orquestração de microserviços:
no processamento de transações,
como a efetivação de um pagamento de conta
integração dos microserviços do iti
a sistemas corporativos do Itaú
alguns key takeaways
Apache Kafka é um ótimo storage system
otimizado para
high-performance,
low-latency commit log storage,
replication,
and propagation
Apache Kafka vai desempenhar da mesma maneira,
seja retendo 50 KB, seja retendo 50TB
para prover flexibilidade,
Apache Kafka possui uma grande superfície de configuração
combinar mensageria, storage e stream processing
é o que posiciona muito bem o Apache Kafka
como uma plataforma de streaming
traz a possibilidade de
lidar com dados históricos e futuros
com a mesma abordagem
traz a possibilidade de
integrar todo tipo de sistema e workload,
incluindo pipelines de dados,
aplicações off-line ou com janelas estendidas de
manutenção
e muito mais
referências
o kafka.apache.org/intro
o confluent.io/apache-kafka-stream-processing-book-bundle/
o training.confluent.io/schedule
Obrigado!
#fazumiti

Mais conteúdo relacionado

Mais procurados

Exactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka StreamsExactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka StreamsGuozhang Wang
 
Kafka Intro With Simple Java Producer Consumers
Kafka Intro With Simple Java Producer ConsumersKafka Intro With Simple Java Producer Consumers
Kafka Intro With Simple Java Producer ConsumersJean-Paul Azar
 
Apache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice ArchitecturesApache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice ArchitecturesKai Wähner
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services ArchitectureAraf Karsh Hamid
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?confluent
 
Kafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema RegistryKafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema RegistryJean-Paul Azar
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsAraf Karsh Hamid
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkSVDevOps
 
Apache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and DevelopersApache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and Developersconfluent
 
Introducing Confluent Cloud: Apache Kafka as a Service
Introducing Confluent Cloud: Apache Kafka as a Service Introducing Confluent Cloud: Apache Kafka as a Service
Introducing Confluent Cloud: Apache Kafka as a Service confluent
 
From distributed caches to in-memory data grids
From distributed caches to in-memory data gridsFrom distributed caches to in-memory data grids
From distributed caches to in-memory data gridsMax Alexejev
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaJeff Holoman
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesAraf Karsh Hamid
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafkaemreakis
 
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...HostedbyConfluent
 
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka EcosystemMicroservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystemconfluent
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To MicroservicesLalit Kale
 

Mais procurados (20)

Exactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka StreamsExactly-once Stream Processing with Kafka Streams
Exactly-once Stream Processing with Kafka Streams
 
Kafka Intro With Simple Java Producer Consumers
Kafka Intro With Simple Java Producer ConsumersKafka Intro With Simple Java Producer Consumers
Kafka Intro With Simple Java Producer Consumers
 
Apache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice ArchitecturesApache Kafka as Event Streaming Platform for Microservice Architectures
Apache Kafka as Event Streaming Platform for Microservice Architectures
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
 
Kafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema RegistryKafka and Avro with Confluent Schema Registry
Kafka and Avro with Confluent Schema Registry
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
Quarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java frameworkQuarkus - a next-generation Kubernetes Native Java framework
Quarkus - a next-generation Kubernetes Native Java framework
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Apache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and DevelopersApache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and Developers
 
Introducing Confluent Cloud: Apache Kafka as a Service
Introducing Confluent Cloud: Apache Kafka as a Service Introducing Confluent Cloud: Apache Kafka as a Service
Introducing Confluent Cloud: Apache Kafka as a Service
 
From distributed caches to in-memory data grids
From distributed caches to in-memory data gridsFrom distributed caches to in-memory data grids
From distributed caches to in-memory data grids
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing Strategies
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...
Kafka error handling patterns and best practices | Hemant Desale and Aruna Ka...
 
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka EcosystemMicroservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystem
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 

Semelhante a Conhecendo Apache Kafka

Introdução ao Kafka
Introdução ao KafkaIntrodução ao Kafka
Introdução ao KafkaDavi Alves
 
7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdf7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdfManoel Ribeiro
 
Apache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceApache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceWaldyr Felix
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia J Chaves Silva
 
Começando com aplicações serverless na AWS
 Começando com aplicações serverless na AWS Começando com aplicações serverless na AWS
Começando com aplicações serverless na AWSAmazon Web Services LATAM
 
Descomplicando Apache Kafka
Descomplicando Apache KafkaDescomplicando Apache Kafka
Descomplicando Apache KafkaFelipe Lopes
 
Congresso iv
Congresso ivCongresso iv
Congresso ivIP10
 
Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaGustavo Bellini Bigardi
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosValdir Junior
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicaçãoSimba Samuel
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2Felipe Santos
 

Semelhante a Conhecendo Apache Kafka (20)

Kafka streams
Kafka streamsKafka streams
Kafka streams
 
Introdução ao Kafka
Introdução ao KafkaIntrodução ao Kafka
Introdução ao Kafka
 
7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdf7.Troca de mensagem (Message Parsing).pdf
7.Troca de mensagem (Message Parsing).pdf
 
Apache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceApache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performance
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Começando com aplicações serverless na AWS
 Começando com aplicações serverless na AWS Começando com aplicações serverless na AWS
Começando com aplicações serverless na AWS
 
Descomplicando Apache Kafka
Descomplicando Apache KafkaDescomplicando Apache Kafka
Descomplicando Apache Kafka
 
Congresso iv
Congresso ivCongresso iv
Congresso iv
 
Deep dive com Amazon Aurora
Deep dive com Amazon AuroraDeep dive com Amazon Aurora
Deep dive com Amazon Aurora
 
Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache Kafka
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Curso asp - basico
Curso   asp - basicoCurso   asp - basico
Curso asp - basico
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de Dados
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicação
 
Python CGI
Python CGIPython CGI
Python CGI
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2
 

Conhecendo Apache Kafka

Notas do Editor

  1. gerar relatórios alimentar sistemas de machine learning atualizar resultados de busca etc LinkedIn + 0.5B users
  2. https://www.slideshare.net/GuozhangWang/apache-kafka-at-linkedin-43307044
  3. uma diferença que quero destacar entre esse slide e o slide anterior aqui as pessoas não tiveram opção já o cenário do LinkedIn é recorrente temos opção? cuidado para não repetir erros datados de 2010
  4. um ponto de encontro interessante é: Kafka pode ser visto como a espinha dorsal de uma arquitetura corporativa
  5. por exemplo – stateful computations
  6. tópicos são mantidos como logs particionados logs particionados são conjuntos de mensagens sem fim pré-determinado mensagens são ordenadas e imutáveis toda mensagem pertence a uma partição toda mensagem possui um offset
  7. o consumo de um tópico sempre é arranjado em grupos de consumidores cada grupo possui offsets independentes um grupo pode ter uma quantidade de consumidores não ociosos menor ou igual ao número de partições do tópico
  8. leader handles all read and write requests followers passively replicate the leader if the leader fails, one of the followers will automatically become the new leader https://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/
  9. para concluir com uma provocação… partiu “urbanizar“ a tecnologia do iti com práticas e ferramentas modernas