Aggiornamento del database in Micro-service

0

Costruito un microservizio che aggiornerà il valore della colonna ogni volta che viene chiamato.

Stack di applicazioni - Spring boot, hibernate e database mySQL.

Attualmente abbiamo elencato i seguenti approcci in caso di scenari di concorrenza

  1. Creazione di una colonna di data / ora del datatype, assumendo che il cliente mantenga questo valore di timestamp in richiesta durante la chiamata al servizio. Ogni chiamata al servizio di aggiornamento Micro convaliderà il timestamp presente in db con il timestamp presente nella richiesta se corrisponde aggiusterà altrimenti non aggiornerà il database.
  2. Utilizzo di blocchi ottimistici durante l'aggiornamento del database.

Quale dei suddetti approcci sarebbe incoraggiato per questo micro-servizio di aggiornamento. Qualche altra best practice per risolvere la concorrenza? per favore correggimi se gli approcci sopra menzionati non sono corretti / efficienti?

    
posta Prakash_se7en 09.09.2017 - 16:09
fonte

1 risposta

0

il problema con i timestamp è che è improbabile che i clienti siano d'accordo sul tempo.

Stai andando meglio con un numero di versione. Invece di dire "voglio aggiornare l'oggetto" il client dovrebbe dire "voglio aggiornare la versione 4 dell'oggetto".

Il tuo servizio può quindi verificare la versione corrente sul database (bloccando il record) e restituire un errore se la versione non corrisponde, o aggiornando se lo fa.

    
risposta data 09.09.2017 - 20:20
fonte

Leggi altre domande sui tag