Massimizzazione della robustezza di CDC Replication Engine for Kafka

Puoi configurare il file delle proprietà del produttore Kafka CDC per sfruttare la gestione nativa di Kafkaper il ribilanciamento del leader, l'errore broker e altri errori dal server Kafka .

Procedura

  1. Modifica le proprietà del produttore Kafka CDC nel file CDC_Kafka_instance_directory/conf/kafkaproducer.properties .
  2. Aggiungere o modificare le seguenti proprietà:
    ritenta.ritardo. ms =tempo1
    Dove time1 è un valore intero in millisecondi.
    ries=num1
    Dove num1 è un valore intero per il numero di volte in cui il client deve riprovare quando rileva un errore. L'impostazione di un valore per num1 maggiore di zero fa sì che il client invii nuovamente qualsiasi record il cui invio ha esito negativo con un errore.

    Per Kafka versione 2.3.1 o successiva:

    ritenta.ritardo. ms =tempo2
    Dove time2 è un valore intero in millisecondi.
    delivery.timeout. ms =num2
    Dove num2 è un valore intero per il tempo totale di attesa del riconoscimento da parte del broker e il tempo consentito per gli errori di invio con la possibilità di riprovare. Questo valore deve essere maggiore dell'interruzione di rete prevista.
  3. Se la versione del cluster Kafka supporta la funzione idempotence, impostare enable.idempotence=true. Per le vecchie versioni del cluster Kafka che non supportano idempotence, puoi impostare max.in.flight.requests.per.connection=1 per promuovere la consegna batch ordinata.
  4. Termina la replica e avvia la replica per le sottoscrizioni Kafka .

Operazioni successive

Per una discussione completa di tali parametri e delle rispettive implicazioni, consulta la documentazione diApache Kafka.

Per ottimizzare i valori per il tuo ambiente, regola le Kafka retry.backoff.ms e retries in base alla seguente formula:

retry.backoff.ms * retries > the anticipated maximum time for leader change metadata to propagate in the cluster

Ad esempio, si potrebbe voler configurare enable.idempotence=true, retry.backoff.ms= 300 e retries= 150.

Nota: la documentazione Kafka per i tentativi include le seguenti considerazioni quando si utilizza la robustezza desiderata:

"L'autorizzazione dei tentativi senza impostare max.in.flight.requests.per.connection su 1 modificherà potenzialmente l'ordinamento dei record perché se due batch vengono inviati a una singola partizione e il primo ha esito negativo e viene ritentato, ma il secondo ha esito positivo, i record nel secondo batch potrebbero essere visualizzati per primi."

Se max.in.flight.requests.per.connection è impostato su 1, quando un produttore Kafka restituisce un errore a CDC Replication Engine for Kafka, la replica termina per tale sottoscrizione. I record duplicati potrebbero essere scritti all'avvio della successiva sessione di mirroring CDC. In base alla logica di business, è possibile aumentare max.in.flight.requests.per.connection. Se si esegue questa operazione, tenere presente che i tentativi trasparenti per il produttore con un singolo batch in corso indicano che potrebbe essere visualizzato un batch ripetuto in una singola sessione di replica.