Save 37% off PRO during our Black Friday Sale! »

Distributed Streaming Platforms em Arquiteturas Modernas com Apache Kafka

Distributed Streaming Platforms em Arquiteturas Modernas com Apache Kafka

02ff2dde723b6e26f4ef03ee6b3f6eb9?s=128

Ricardo Ferreira

August 24, 2019
Tweet

Transcript

  1. TECNOLOGIAS Distributed Streaming Platforms em Arquiteturas Modernas com Apache Kafka®

    Ricardo Ferreira
  2. Sobre mim: • Ricardo Ferreira ❑ Developer Advocate @ Confluent

    ❑ Ex-Oracle, Red Hat, squadra tecnologia ❑ Ricardo@confluent.io ❑ riferrei@riferrei.net ❑ https://riferrei.net @riferrei
  3. @riferrei | @Devisland | @CONFLUENTINC pergunta: o que é um

    distributed streaming platform?
  4. @riferrei | @devisland | @CONFLUENTINC ? ? ?

  5. @riferrei | @devisland | @CONFLUENTINC Vamos voltar no tempo?

  6. @riferrei | @devisland | @CONFLUENTINC databases 30 anos atrás… você

    está me envergonhando na frente dos magos… Databases hoje em dia
  7. @riferrei | @Devisland | @CONFLUENTINC Qual o Problema dos databases?

  8. @riferrei | @devisland | @CONFLUENTINC Muito limitado! Faz muita lambança!

  9. @riferrei | @devisland | @CONFLUENTINC Limitado? Tá querendo me sacanear?

  10. @riferrei | @devisland | @CONFLUENTINC Por quê você acha que

    a gente faz cargas batch para o dwh? Sim… limitado.
  11. @riferrei | @devisland | @CONFLUENTINC Desenvolvedor mantendo o batch funcionando...

    …Enquanto o modelo de dados fica mudando…
  12. @riferrei | @devisland | @CONFLUENTINC lambança Linha de negócio 01

    Linha de negócio 02 Linha de negócio 03
  13. @riferrei | @devisland | @CONFLUENTINC Eita que diagrama bunito... Um

    Monte de licença pra vender!
  14. @riferrei | @Devisland | @CONFLUENTINC Workarounds da indústria

  15. @riferrei | @devisland | @CONFLUENTINC

  16. @riferrei | @devisland | @CONFLUENTINC nosql

  17. @riferrei | @devisland | @CONFLUENTINC

  18. @riferrei | @Devisland | @CONFLUENTINC Resultado…

  19. @riferrei | @devisland | @CONFLUENTINC lambança Linha de negócio 01

    Linha de negócio 02 Linha de negócio 03
  20. @riferrei | @devisland | @CONFLUENTINC Another day... Another doug

  21. @riferrei | @devisland | @CONFLUENTINC Vamos voltar no tempo?

  22. @riferrei | @devisland | @CONFLUENTINC

  23. @riferrei | @devisland | @CONFLUENTINC Jay kreps Neha narkhede Jun

    rao
  24. @riferrei | @devisland | @CONFLUENTINC

  25. 25 ETL/integração 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 Super escalável durável Persistente Mantêm ordem replay rápido (baixa latência) O que está acontecendo agora? O que aconteceu no passado?
  26. 26 ETL/integração de dados mensageria Batch Caro de manter Consome

    tempo 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? Super escalável durável Persistente Mantêm ordem replay rápido (baixa latência) streaming platform
  27. @riferrei | @Devisland | @CONFLUENTINC pergunta: o que é um

    distributed streaming platform?
  28. 28 01 Mensageria bem feita 02 Processamento de eventos 03

    Sistema de armazenamento @riferrei | @devisland | @CONFLUENTINC
  29. @riferrei | @Devisland | @CONFLUENTINC 01 Mensageria bem feita

  30. @riferrei | @devisland | @CONFLUENTINC http://cidrdb.org/cidr2015/Papers/CIDR15_Paper16.pdf Você realmente acha que

    você faz consultas em tabelas?
  31. @riferrei | @devisland | @CONFLUENTINC Dualidade entre streams e tabelas

    {"user":"riferrei","score":"1001"} {"user":"riferrei","score":"1002"} {"user":"riferrei","score":"1003"} {"user":"riferrei","score":"1004"} {"user":"riferrei","score":"1005"} {"user":"riferrei","score":"1005"} stream tabela
  32. @riferrei | @devisland | @CONFLUENTINC “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
  33. @riferrei | @devisland | @CONFLUENTINC Logs são simples!

  34. @riferrei | @devisland | @CONFLUENTINC O(1) ao invés de o(log

    n) Graças ao uso Do Sistema de arquivos
  35. @riferrei | @devisland | @CONFLUENTINC Maior volume de dados Graças

    ao uso Do page cache do Sistema operacional
  36. @riferrei | @devisland | @CONFLUENTINC Menos uso de cpu e

    heap Através da api sendfile do linux
  37. @riferrei | @Devisland | @CONFLUENTINC 02 processamento de eventos

  38. @riferrei | @devisland | @CONFLUENTINC O que é processamento de

    eventos? ? Tentativa de fraude possível fraude
  39. @riferrei | @devisland | @CONFLUENTINC 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
  40. @riferrei | @Devisland | @CONFLUENTINC 03 Sistema de armazenamento

  41. @riferrei | @devisland | @CONFLUENTINC Meh… mas só um database

    te dá acid…
  42. @riferrei | @devisland | @CONFLUENTINC A C I D Transações

    precisam ser ou tudo ou nada
  43. @riferrei | @devisland | @CONFLUENTINC Api de transações para produtores

    Níveis de isolamento para consumidores aplicação
  44. @riferrei | @devisland | @CONFLUENTINC A C I D Reinforçar

    invariantes que garantam consistência
  45. @riferrei | @devisland | @CONFLUENTINC 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!
  46. @riferrei | @devisland | @CONFLUENTINC Eventos em ordem por partição

  47. @riferrei | @devisland | @CONFLUENTINC Schemas são apis

  48. @riferrei | @devisland | @CONFLUENTINC Diga olá ao schema registry

  49. @riferrei | @devisland | @CONFLUENTINC A C I D Garantir

    acesso serial mesmo quando threads executam de forma concorrente
  50. @riferrei | @devisland | @CONFLUENTINC Produzindo registros sem chave aplicação

    Registros serão escritos em várias partições diferentes
  51. @riferrei | @devisland | @CONFLUENTINC Produzindo registros com chave Aplicação

    a Aplicação b Aplicação c Aplicação d
  52. @riferrei | @devisland | @CONFLUENTINC A C I D Dados

    commitados devem permanecer assim mesmo em caso de falhas
  53. @riferrei | @devisland | @CONFLUENTINC Lembra disso?

  54. @riferrei | @devisland | @CONFLUENTINC Tolerância a falhas via replicação

  55. @riferrei | @Devisland | @CONFLUENTINC demo

  56. None
  57. @riferrei | @Devisland | @CONFLUENTINC LIVROS DE APACHE KAFKA (by

    CONFLUENT) https://www.confluent.io/apache-kafka-stream-processing-book-bundle
  58. @riferrei | @devisland | @CONFLUENTINC

  59. None