La v1.4 aggiunge il modulo transazioni al Kafka Simulator - 10 nuovi scenari sull’argomento che gli ingegneri approvano più spesso con un cenno del capo e vedono davvero all’opera più raramente: la semantica exactly-once. Il programma arriva a 55 su 122.

Cosa c’è nella v1.4

Le transazioni trasformano un flusso di scritture in un’unità atomica, e cambiano ciò che un consumer ha il permesso di vedere:

L’exactly-once è difficile da insegnare perché gran parte è invisibile: i marker, l’LSO, gli epoch e un consumer che salta in silenzio i record abortiti. Il simulatore mette tutto sulla timeline - puoi guardare l’LSO restare fermo sotto una transazione aperta e balzare in avanti nell’istante in cui viene committata.

Nuovo tipo di cluster nel free play: attivo/attivo

La scala di topologie iniziata in v1.3 con l’attivo/passivo continua a salire: il selettore di cluster del free play guadagna una terza forma - Attivo / attivo: due regioni, entrambe accettano scritture, ciascuna replica verso l’altra.

Non è, deliberatamente, «l’attivo/passivo con la freccia raddoppiata». Il preset è simmetrico:

  • Ogni regione possiede il proprio topic. west possiede west.orders, east possiede east.orders, e ciascuno viene replicato in sola lettura nell’altra regione - così entrambi i lati custodiscono l’intero flusso senza ambiguità su chi possa scrivere sotto lo stesso nome.
  • Ogni regione scrive in locale e legge in globale. Un producer scrive solo nel topic della propria regione; il consumer group di ogni regione legge sia il topic locale sia la copia replicata, così ogni record viene visto una volta per lato.
  • Ogni regione è un cluster a sé. Entrambe eseguono un quorum KRaft indipendente, quindi puoi uccidere i controller di una regione - o l’intera regione - e osservare cosa il lato superstite riesce e non riesce più a fare.

Proprio quest’ultimo punto è il contrasto tagliente con le garanzie transazionali che questo pack insegna: l’exactly-once è una promessa per cluster, e una coppia attivo/attivo sono due cluster. Tutto ciò che il modulo transazioni ti dà vale dentro una regione e si ferma al mirror.

Il programma DR che spiega queste forme arriva sempre in v1.8 - le sandbox atterrano prima di proposito, così hai dove provare le idee prima che gli scenari le raccontino.

Sulle fondamenta della replica

Questo pack poggia direttamente sulla v1.3. Una transazione è una garanzia di durabilità con l’atomicità aggiunta sopra, quindi l’ISR e l’high watermark che lì hai imparato a leggere restano il terreno solido anche qui - l’LSO è semplicemente un tetto più stretto al di sopra.

Apri il simulatore, avvia una transazione, produci al suo interno e abortiscila - poi guarda cosa un consumer read_committed vede e cosa no.