Lorsque vous décidez entre Counter
et Gauge
, La documentation Prométhée stipule que
Pour choisir entre compteur et jauge, il existe une règle simple: si la valeur peut descendre, c'est une jauge. Les compteurs ne peuvent monter que (et réinitialiser, comme lorsqu'un processus redémarre).
Ils semblent couvrir des cas d'utilisation qui se chevauchent: vous pouvez utiliser une jauge qui n'augmente que jamais. Alors pourquoi même créer le type de contre-métrique en premier lieu? Pourquoi n'utilisez-vous simplement pas de jauges pour les deux?
D'un point de vue conceptuel, une jauge et un compteur ont des objectifs différents
irate/rate()
, increase()
...Ces opérations d'évolution nécessitent un calcul fiable de l'augmentation que vous ne pouviez pas réaliser avec une jauge, car vous devez détecter des réinitialisations de la valeur.
Techniquement, un comptoir a deux propriétés importantes:
Si l'application redémarre entre deux éraflures Prométheus, la valeur du second gratte est susceptible d'être inférieure à celle du gratte précédent et l'augmentation peut être récupérée (quelque peu parce que vous perdrez toujours l'augmentation entre le dernier grattage et la réinitialisation).
Un simple algorithme pour calculer l'augmentation du comptoir entre les éraflures de T1 à T2 est la suivante:
counter(t2) >= counter(t1)
alors increase=counter(t2)-counter(t1)
counter(2) < counter(t1)
alors increase=counter(t2)
En conclusion, d'un point de vue technique, vous pouvez utiliser une jauge au lieu d'un compteur à condition que vous le réinitialisez à 0 au démarrage et que vous ne l'incrète que, mais toute violation du contrat entraînera des valeurs erronées.
À titre de note latérale, je m'attends également à ce que la mise en œuvre d'une comptoir utilise une représentation entière non signée pendant que la jauge utilise plutôt une représentation de points flottante. Cela a un impact mineur sur le code tel que la capacité de débordement à 0 automatiquement et de mieux prendre en charge les opérations atomiques sur les processeurs actuels.