web-dev-qa-db-fra.com

Configuration d'Hystrix

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

  1. Indique-t-il que le circuit est ouvert après 3 échecs ou
  2. Ouvrez le circuit après 3 échecs simultanés.

Passé par la documentation link

Quelqu'un peut-il répondre?

 

 

10
Jay

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épasse errorThresholdPercentage, à condition également que le nombre d'actions dans le circuit dans la période soit au moins requestVolumeThreshold


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.

35
mountain traveller

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

0
Sumanth Duvvuru