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 Service 1 DB 1 DB 2 System

    6 System 7 System 5 System 4 System 2 System 1 System 3 Service 2 Service 2
  2. 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
  3. 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
  4. 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
  5. 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]
  6. Kafka Principais usos: • Como sistema de mensagens ◦ Publish-subscribe

    ◦ Filas • Como sistema de armazenamento ◦ Event sourcing
  7. 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
  8. Partições • Um tópico possui várias partições • É possível

    produzir / consumir em múltiplas partições
  9. 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