Comment assurer la synchronisation client-serveur?

Je suis tombé sur une question client-serveur dans laquelle je ne sais pas comment répondre. Vous avez des centaines de milliers de clients connectés à un module de boîte noire, qui parle à un cloud.

Certaines des opérations passées du client au serveur sont les suivantes:

  1. set (a, 5)
  2. set (b, 3)
  3. obtenir un)
  4. set (a, 7)
  5. set (c, 4)

Lorsque nous effectuons l’opération get (a), nous voulons nous assurer que nous avons la version la plus récente de a. Il y a un délai entre le moment où le get peut passer dans le cloud et la valeur reçue. A ce moment-là, la prochaine instruction (a, 7) aura déjà commencé. (Exemple: le client 1 peut exécuter la commande get (a) et le client 2 peut exécuter la commande set (a) presque en même temps. C’est là que nous voulons que la synchronisation se produise)

Comment pouvons-nous concevoir la boîte noire pour nous assurer que nous avons toujours la valeur la plus récente / exacte d’un?

Ma pensée initiale était d’avoir une queue contenant les instructions entrantes dans la boîte noire. Lorsqu’une instruction est terminée, nous pouvons commencer l’instruction suivante. Mais il semble que cela retarderait considérablement les instructions reçues.

Des suggestions sur la façon dont cela peut être fait?