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.
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
- 01Un 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.
→ - 02Schema 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
→ - 03Akka è 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
→ - 04Da 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
→ - 05Kafka 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
→