Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Meetup São Paulo, Outubro 2019

Meetup São Paulo, Outubro 2019

Ricardo Ferreira

October 30, 2019
Tweet

More Decks by Ricardo Ferreira

Other Decks in Programming

Transcript

  1. Tudo o que você gostaria de saber sobre o kafka®

    (mas sempre teve medo de perguntar) @riferrei | @confluentinc | #Kafkameetup
  2. @riferrei | @confluentinc | @itau Evento estado > Eu Mudei

    meu empredo da oracle para a confluent Eu trabalho na confluent
  3. @riferrei | @confluentinc | @itau Mudança de emprego Máquina de

    sugestões Sistema de buscas Serviço de email
  4. @riferrei | @confluentinc | @itau SQL SQL SQL Máquina de

    sugestões Sistema de buscas Serviço de email Bancos de dados são bons para guardar estado Banco de dados LOG
  5. @riferrei | @confluentinc | @itau Mas não lidam muito bem

    com grandes volumes Banco de dados 1000x mais volume Eventos não-transacionais Eventos transacionais LOG
  6. @riferrei | @confluentinc | @itau Tracking de usuários Aplicações de

    logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH
  7. @riferrei | @confluentinc | @itau conclusão: o uso de bancos

    de dados não era apropriado dado o problema a ser resolvido!
  8. @riferrei | @confluentinc | @itau LOG Tracking de usuários Aplicações

    de logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH
  9. @riferrei | @confluentinc | @itau LOG Tracking de usuários Aplicações

    de logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH Mensageria também não lida bem Com volume
  10. @riferrei | @confluentinc | @itau LOG Tracking de usuários Aplicações

    de logs Métricas operacionais banco key/value banco key/value Banco de dados sql MICROSERviços ... HADOOP Elastic search grafana DATA WAREHOUSE REC. ENGINE SEARCH SECURITY EMAIL SOCIAL GRAPH Mensageria não suporta persistência direito
  11. 44 banco de dados mensageria Batch Caro de manter Lento

    demais Difícil de escalar Não têm durabilidade Não têm persistência não possui ordem Não possui replay transacional durável Persistente Mantêm ordem replay rápido (baixa latência) O que está acontecendo agora? O que aconteceu no passado?
  12. 45 banco de dados mensageria Batch Caro de manter Lento

    demais Difícil de escalar Não têm durabilidade Não têm persistência não possui ordem Não possui replay Highly Scalable Durable Persistent Ordered Fast (Low Latency) O que está acontecendo agora? O que aconteceu no passado? transacional durável Persistente Mantêm ordem replay rápido (baixa latência) distributed streaming platform
  13. “The truth is the log. The database is a cache

    of a subset of the log.” — pat helland Immutability changes everything http://cidrdb.org/cidr2015/Papers/CIDR15_Paper16.pdf
  14. @riferrei | @confluentinc | @itau Banco de dados 0 1

    2 3 4 5 6 7 8 LOG leituras escritas DESTINo sistema A (tempo = 2) DESTINo sistema b (tempo = 6) Banco de dados invertido: logs passam a ser mais importantes que tabelas
  15. @riferrei | @confluentinc | @itau 0 1 2 3 4

    5 6 7 8 leituras escritas Sistema a Sistema b Gerenciamento de offsets por consumidor
  16. @riferrei | @confluentinc | @itau BROKER 1 BROKER 2 BROKER

    3 BROKER 4 TOPIC 1-PART 1 TOPIC 2-PART 3 TOPIC 3-PART 1 TOPIC 2-PART 1 TOPIC 5-PART 1 TOPIC 6-PART 1 TOPIC 1-PART 2 TOPIC 2-PART 4 TOPIC 3-PART 2 TOPIC 2-PART 2 TOPIC 5-PART 2 TOPIC 6-PART 2 CONSUmidor CONSUMidor CONSUMidor PRODUtor PRODutor PRODutor Escalabilidade através de particionamento
  17. @riferrei | @confluentinc | @itau Maior volume de dados Graças

    ao uso Do page cache do Sistema operacional
  18. @riferrei | @confluentinc | @itau Menos uso de cpu e

    heap Através da api sendfile do linux
  19. @riferrei | @confluentinc | @itau O que é processamento de

    eventos? Tentativa de fraude possível fraude ?
  20. @riferrei | @confluentinc | @itau O que é processamento de

    eventos? CREATE STREAM possible_fraud AS SELECT card_number, count(*) FROM authorization_attempts WINDOW TUMBLING (SIZE 5 MINUTE) GROUP BY card_number HAVING count(*) > 3; Tentativa de fraude possível fraude tópico tópico
  21. @riferrei | @confluentinc | @itau pergunta: qual a regra pra

    definir quando um tópico deve ser persistente?
  22. @riferrei | @confluentinc | @itau Api de transações para produtores

    Níveis de isolamento para consumidores aplicação
  23. @riferrei | @confluentinc | @itau A C I D Reinforçar

    invariantes que garantam consistência
  24. @riferrei | @confluentinc | @itau Propriedades do Produtor enable.idempotence=true max.inflight.requests.per.connection=1

    acks = “all” retries > 0 (preferably MAX_INT) (pid, seq) [payload] (100, 1) {key: 1234, data: abcd} - offset 3345 (100, 1) {key: 1234, data: abcd} - rejected, ack re-sent (100, 2) {key: 5678, data: efgh} - offset 3346 Sem duplicação!
  25. @riferrei | @confluentinc | @itau A C I D Garantir

    acesso serial mesmo quando threads executam de forma concorrente
  26. @riferrei | @confluentinc | @itau Produzindo registros sem chave aplicação

    Registros serão escritos em várias partições diferentes
  27. @riferrei | @confluentinc | @itau pergunta: é uma boa prática

    sempre usar chaves para escrever nos tópicos?
  28. @riferrei | @confluentinc | @itau A C I D Dados

    commitados devem permanecer assim mesmo em caso de falhas