Serie · 5 articoli

Kafka in un sistema di telemetria

Dall'evento come fatto già successo alle tre strategie di crash recovery

Passare agli eventi non rende il sistema più veloce: lo rende meno accoppiato. La serie parte da cosa Kafka garantisce davvero: l'ordine vale per chiave, non in assoluto. Poi attraversa i problemi che arrivano dopo: due servizi che non sono d'accordo sul formato, attori che bloccano un thread, e un consumer che riparte dopo un crash.

5
Articoli pubblicati
55
Minuti di lettura
Intermedio
Livello
KafkaAvroSchema RegistryPekkoScalaEvent Streaming

Un evento non è una richiesta: è un fatto già successo

Una chiamata sincrona chiede a qualcuno di fare qualcosa e aspetta la risposta. Un evento dichiara che qualcosa è successo, e chi lo riceve decide da solo cosa farne. La differenza sembra filosofica finché non si guarda cosa cambia in produzione: un servizio lento smette di rallentare quelli che lo chiamano, e un servizio fermo smette di fermarli.

Il prezzo pero' c'è, e questa serie lo paga per intero invece di nominarlo e passare oltre. L'ordine dei messaggi vale solo per chiave. Lo stato del consumer diventa un problema vostro. Il debug attraversa un componente in più. E due servizi che non sono d'accordo su cosa contiene un messaggio si rompono a runtime, non a compile-time.

Il sistema da cui vengono questi articoli è una piattaforma di telemetria per mezzi d'opera: sensori che pubblicano dati odometrici e posizione, tre consumer che leggono lo stesso topic con responsabilità diverse. Un caso abbastanza piccolo da stare in una demo e abbastanza vero da avere già rotto qualcosa.

Cosa imparerai

  • Capire cosa Kafka garantisce sull'ordine, e a quali condizioni smette di garantirlo
  • Versionare il formato dei messaggi con Avro e uno Schema Registry, invece che a parole
  • Migrare da Akka a Pekko sapendo dove si rompe davvero
  • Togliere l'I/O bloccante dagli attori senza perdere la backpressure
  • Scegliere la strategia di recovery dalla natura dello stato, non per preferenza

Articoli della serie

  1. 01
    Un evento non è una richiesta: è un fatto già successo 12 min

    Partizioni, segmenti e chiavi: la struttura interna che decide cosa Kafka vi garantisce sull'ordine dei messaggi, e a quali condizioni.

  2. 02
    Schema Registry con Apache Kafka: da JSON selvaggio ad Avro con Apicurio 14 min

    Migrazione da JSON senza schema ad Avro con Apicurio Registry: infrastruttura, producer Node.js, consumer Python, schema evolution

  3. 03
    Akka è morto, lunga vita a Pekko 9 min

    Guida pratica alla migrazione da Akka a Apache Pekko in produzione: checklist completa, gotcha reali e lezioni apprese dal campo

  4. 04
    Da blocking poll a stream reattivi con Pekko Connectors Kafka 12 min

    Refactoring da attori bloccanti a Source.queue e consumer threads dedicati: pattern pratici con Pekko Streams e Kafka per sistemi di telemetria

  5. 05
    Kafka crash recovery: tre strategie per tre tipi di stato 8 min

    Tre strategie di recovery per consumer Kafka con stato diverso: replay completo per idempotenti, checkpoint per additivi, nessun recovery per stateless