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

Distributed Streaming Platforms em Arquiteturas Modernas com Apache Kafka

Distributed Streaming Platforms em Arquiteturas Modernas com Apache Kafka

Ricardo Ferreira

August 24, 2019
Tweet

More Decks by Ricardo Ferreira

Other Decks in Programming

Transcript

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

    ❑ Ex-Oracle, Red Hat, squadra tecnologia ❑ [email protected][email protected] ❑ https://riferrei.net @riferrei
  2. @riferrei | @devisland | @CONFLUENTINC databases 30 anos atrás… você

    está me envergonhando na frente dos magos… Databases hoje em dia
  3. @riferrei | @devisland | @CONFLUENTINC Por quê você acha que

    a gente faz cargas batch para o dwh? Sim… limitado.
  4. 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?
  5. 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
  6. 28 01 Mensageria bem feita 02 Processamento de eventos 03

    Sistema de armazenamento @riferrei | @devisland | @CONFLUENTINC
  7. @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
  8. @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
  9. @riferrei | @devisland | @CONFLUENTINC O(1) ao invés de o(log

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

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

    heap Através da api sendfile do linux
  12. @riferrei | @devisland | @CONFLUENTINC O que é processamento de

    eventos? ? Tentativa de fraude possível fraude
  13. @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
  14. @riferrei | @devisland | @CONFLUENTINC Api de transações para produtores

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

    invariantes que garantam consistência
  16. @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!
  17. @riferrei | @devisland | @CONFLUENTINC A C I D Garantir

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

    Registros serão escritos em várias partições diferentes
  19. @riferrei | @devisland | @CONFLUENTINC A C I D Dados

    commitados devem permanecer assim mesmo em caso de falhas
  20. @riferrei | @Devisland | @CONFLUENTINC LIVROS DE APACHE KAFKA (by

    CONFLUENT) https://www.confluent.io/apache-kafka-stream-processing-book-bundle