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

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
  2. Roadmap 1. Contextualização e Arquitetura 2. Kafka 3. Demonstração

  3. André Badawi Missaglia Data Engineer @ Arquivei

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

  5. None
  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
  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
  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
  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
  10. Arquitetura de eventos DB 1 DB 2 System 1 System

    2 Event
  11. Arquitetura lambda

  12. Arquitetura de 3 camadas Frontend Backend Database

  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]
  14. Dualidade Log / Tabela (Event sourcing)

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

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

  18. Kafka Principais usos: • Como sistema de mensagens ◦ Publish-subscribe

    ◦ Filas • Como sistema de armazenamento ◦ Event sourcing
  19. Kafka

  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
  21. Paralelismo • Não é possível garantir a ordem de processamento

    com apenas 1 fila.
  22. Partições • Um tópico possui várias partições • É possível

    produzir / consumir em múltiplas partições
  23. Replicação

  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
  25. Batch + Stream unificados

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

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