13 points par gos16052 2022-06-10 | Aucun commentaire pour le moment. | Partager sur WhatsApp

Incohérence du cache

  • un serveur de cache envoie à la db une requête pour x, et avant que la réponse x=42 de la db n’arrive au cache
    • une mise à jour externe passe x=43, et x=43 est transmis au cache via une invalidation
    • le cache reçoit x=43 et l’applique
    • la réponse x=42 arrive en retard et est alors appliquée
  • le problème ci-dessus peut être résolu en attachant une version aux données
  • mais même avec une version, si une eviction de x=43 se produit, x=42 peut quand même être appliqué

Polaris : service de mesure de l’incohérence du cache

  • fonctionnement
    • Polaris reçoit lui aussi les événements d’invalidation
    • lorsqu’il reçoit un événement, il sonde tous les serveurs de cache pour vérifier s’ils conservent une version antérieure
    • si le cache possède une version antérieure, cela est considéré comme une incohérence et l’événement peut être remis en file pour réessai
      • car l’événement d’invalidation peut arriver en retard au serveur de cache
    • après un certain délai (1 minute, 3 minutes, 5 minutes, etc.), une alerte d’incohérence est envoyée
  • métrique
    • elle indique si les écritures de cache correspondant à N nines sur les M dernières minutes sont cohérentes
    • si l’on a 10 nines sur 5 minutes, cela signifie que, sur les 10 milliards d’écritures de cache les plus récentes sur 5 minutes, 1 est incohérente

Bibliothèque de journalisation pour déboguer l’incohérence du cache

  • il est impossible de journaliser toutes les écritures de cache
    • à l’origine, le cache a une charge majoritairement orientée lecture, mais la « journalisation » le transformerait en charge majoritairement orientée écriture
  • une bibliothèque a donc été créée pour permettre la journalisation sur une fenêtre temporelle juste après qu’une invalidation se produit
  • la bibliothèque est intégrée à tous les services impliqués dans l’invalidation
  • grâce aux logs, lorsqu’une incohérence se produit, il est possible de reconstituer sous forme de timeline le processus qui y a conduit

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.