$30 off During Our Annual Pro Sale. View Details »

Arquitetura de eventos consistente em sistemas distribuídos - André Missaglia

Opensanca
October 24, 2018

Arquitetura de eventos consistente em sistemas distribuídos - André Missaglia

Manter diferentes sistemas, geradores e/ou produtores de dados, com informações sincronizadas e consistentes representa um grande desafio. Nesta palestra, vamos falar da evolução da nossa arquitetura de eventos, técnicas usadas e as dificuldades encontradas no processo.

Opensanca

October 24, 2018
Tweet

More Decks by Opensanca

Other Decks in Programming

Transcript

  1. Arquitetura de eventos
    consistente em sistemas
    distribuídos
    (Kafka)
    André Badawi Missaglia
    Data Engineer @ Arquivei

    View Slide

  2. Roadmap
    1. Contextualização e Arquitetura
    2. Kafka
    3. Demonstração

    View Slide

  3. André Badawi Missaglia
    Data Engineer @ Arquivei

    View Slide

  4. Roadmap
    1. Contextualização e Arquitetura
    2. Kafka
    3. Demonstração

    View Slide

  5. View Slide

  6. Arquitetura de eventos
    Service
    1
    DB 1 DB 2
    System
    6
    System
    7
    System
    5
    System
    4
    System
    2
    System
    1
    System
    3
    Service
    2
    Service
    2

    View Slide

  7. Arquitetura de eventos
    Service
    1
    DB 1 DB 2
    System
    6
    System
    7
    System
    5
    System
    4
    System
    2
    System
    1
    System
    3
    Service
    2
    Service
    2

    View Slide

  8. Arquitetura de eventos
    Gerenciamento de
    contas
    Discador de
    vendas
    Criação de Conta:
    Em “2018-01-01 14:20:00” a conta 2458 foi
    criada
    {
    “type”: “account-was-created” ,
    “id”: 2458
    “createdAt”: “2018-01-01T14:20:00”
    }
    Event Notification:
    Tipos de eventos:
    ● Event Notification
    ● Event-Carried State Transfer
    ● Event Sourcing

    View Slide

  9. Arquitetura de eventos
    Gerenciamento de
    contas
    Discador de
    vendas
    Criação de Conta:
    {
    “type”: “account-was-created” ,
    “id”: 2458
    “createdAt”: “2018-01-01T14:20:00”
    “phone”: “(16) 98765-4321”
    “address”: “...”
    “email”: “...”
    }
    Event-Carried State Transfer:
    Tipos de eventos:
    ● Event Notification
    ● Event-Carried State Transfer
    ● Event Sourcing

    View Slide

  10. Arquitetura de eventos
    DB 1
    DB 2
    System
    1
    System
    2
    Event

    View Slide

  11. Arquitetura lambda

    View Slide

  12. Arquitetura de 3 camadas
    Frontend Backend
    Database

    View Slide

  13. Replicação em banco de dados
    Follower
    Leader
    UPDATE account
    SET
    email=’[email protected]
    WHERE id=5
    Em “2018-01-01
    14:20:00” a conta 5
    mudou o endereço para
    [email protected]

    View Slide

  14. Dualidade Log / Tabela (Event sourcing)

    View Slide

  15. Arquitetura Kappa
    Novos
    dados
    Fila de eventos
    Database 1
    Database 2

    View Slide

  16. View Slide

  17. Roadmap
    1. Contextualização e Arquitetura
    2. Kafka
    3. Demonstração

    View Slide

  18. Kafka
    Principais usos:
    ● Como sistema de mensagens
    ○ Publish-subscribe
    ○ Filas
    ● Como sistema de armazenamento
    ○ Event sourcing

    View Slide

  19. Kafka

    View Slide

  20. Estrutura de um tópico
    ● Leituras e escritas sequenciais
    ● Retenção
    ○ Por tempo (ex.: 7 dias)
    ○ Por tamanho (ex.: 1 Gb)
    ● Offsets são gerenciados pelo kafka
    ● Consumidor deve commitar o offset após
    ler a mensagem com sucesso
    ● Reprocessamento é feito alterando o
    offset

    View Slide

  21. Paralelismo
    ● Não é possível garantir a ordem de processamento com apenas 1 fila.

    View Slide

  22. Partições
    ● Um tópico possui várias partições
    ● É possível produzir / consumir em
    múltiplas partições

    View Slide

  23. Replicação

    View Slide

  24. E muito mais...
    ● Compactação de logs
    ● Compressão
    ● Criptografia, autenticação, regras de acesso
    ● Zookeeper
    ● High watermark
    ● Acknowledgements
    ● Idempotência
    ● Kafka Streams
    ● Kafka Connect
    ● Schema Registry

    View Slide

  25. Batch + Stream
    unificados

    View Slide

  26. Roadmap
    1. Contextualização e Arquitetura
    2. Kafka
    3. Demonstração

    View Slide

  27. André Badawi Missaglia
    [email protected]
    github.com/andremissaglia
    https://www.linkedin.com/in/andremissagl
    ia/
    Obrigado!
    Dúvidas?

    View Slide