J'essaie d'implémenter hystrix pour mon application à l'aide de hystrix-javanica.
J'ai configuré hystrix-configuration.properties comme ci-dessous
hystrix.command.default.execution.isolation.strategy=SEMAPHORE
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
hystrix.command.default.fallback.enabled=true
hystrix.command.default.circuitBreaker.enabled=true
hystrix.command.default.circuitBreaker.requestVolumeThreshold=3
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=50000
hystrix.command.default.circuitBreaker.errorThresholdPercentage=50
la configuration de court-circuit fonctionne bien mais j’ai un doute dans ce hystrix.command.default.circuitBreaker.requestVolumeThreshold=3
Passé par la documentation link
Quelqu'un peut-il répondre?
Fonctionnement du disjoncteur Hystrix: Hystrix ne propose pas de disjoncteur qui se déclenche après un nombre donné de pannes. Le circuit Hystrix se cassera si:
dans une période de durée
metrics.rollingStats.timeInMilliseconds
, le pourcentage d'actions ayant pour résultat une exception gérée dépasseerrorThresholdPercentage
, à condition également que le nombre d'actions dans le circuit dans la période soit au moinsrequestVolumeThreshold
Qu'est-ce que requestVolumeThreshold? requestVolumeThreshold
est un seuil minimal pour le volume (nombre) d'appels du circuit à respecter (dans la fenêtre défilante) avant que le circuit calcule un pourcentage de défaillance. Ce n'est que lorsque ce volume minimum (dans chaque fenêtre temporelle) est atteint que le circuit comparera la proportion d'échec de vos appels à la errorThresholdPercentage
que vous avez configurée.
Imaginez qu’il n’y ait pas de seuil de volume minimum dans le circuit. Imaginez le premier appel dans une fenêtre d'erreur. Un appel sur 1 serait une erreur, = taux d'échec de 100%, supérieur au seuil de 50% que vous avez défini. Donc, le circuit se briserait immédiatement.
La requestVolumeThreshold
existe pour que cela ne se produise pas. Cela signifie effectivement que le taux d'erreur sur votre circuit n'est statistiquement significatif (et ne sera pas comparé à errorThresholdPercentage
) jusqu'à ce qu'au moins __ appels requestVolumeThreshold
aient été reçus à chaque créneau horaire.
je suis plutôt nouveau dans hystrix mais je suppose que je peux vous aider, En général, hystrix.command.default.circuitBreaker.requestVolumeThreshold est une propriété qui définit le nombre minimal de demandes dans une fenêtre continue qui déclenchera le circuit et sa valeur par défaut est 20 et sa valeur peut être modifiée dans le fichier de propriétés ou dans notre méthode annotée @HystrixCommand.
Par exemple, si cette valeur de propriété est 20, si seulement 19 demandes sont reçues dans la fenêtre déroulante (disons une fenêtre de 10 secondes), le circuit ne s'ouvrira pas même si toutes les 19 ont échoué. si la valeur de la demande en échec atteint 20, le circuit sera ouvert et les appels correspondants seront envoyés en mode de repli, même si l'appel aboutit, jusqu'à la fin de la période de la fenêtre en veille.
la fenêtre en veille définit la durée, après le déclenchement du circuit, pour rejeter les demandes avant de permettre à nouveau de déterminer si le circuit doit être fermé à nouveau.Sa valeur est définie par défaut sur 5000 milliSecondes; vous pouvez la modifier en remplaçant circuitBreaker. sleepWindowInMilliseconds propriété.
vous pouvez trouver toutes les propriétés et leur description ici