Paramètre de règle du système Sentinel

Veuillez consulter le gîte pour l'ensemble du projet: https://gitee.com/xwb1056481167/spring-cloud

Installation de Sentinel et intégration de projet: https://blog.csdn.net/www1056481167/article/details/113679945

Le projet dans cet article est:  cloudalibaba-sentinel-service8401

Règles système

Les règles de protection du système sont contrôlées à partir du trafic d'entrée au niveau de l'application, surveillant les indicateurs d'application à partir de plusieurs dimensions telles que la charge, l'utilisation du processeur, la RT moyenne, le QPS d'entrée et le nombre de threads simultanés d'une seule machine, afin que le système puisse fonctionner au maximum. débit le plus possible Tout en garantissant la stabilité du système dans son ensemble.
Les règles de protection du système sont appliquées à la dimension globale, et non à la dimension de ressource, et ne prennent effet que sur le trafic entrant. Le trafic entrant fait référence au trafic entrant dans l'application (EntryType.IN). Par exemple, les demandes reçues par le service Web ou le serveur Dubbo sont toutes du trafic entrant.
Les règles système prennent en charge les modes suivants:
Charge adaptative (valable uniquement pour les machines de type Linux / Unix):  load1 du système est utilisé comme indicateur heuristique pour la protection adaptative du système. Lorsque la charge système1 dépasse la valeur heuristique définie et que le nombre actuel de threads simultanés du système dépasse la capacité système estimée, la protection du système (phase BBR) est déclenchée. La capacité du système est estimée par le maxQps * minRt du système. La valeur de référence de réglage correspond généralement aux cœurs du processeur * 2.5.
Utilisation du processeur (version 1.5.0+):  lorsque l'utilisation du processeur du système dépasse le seuil, la protection du système est déclenchée (plage de valeurs 0,0-1,0), ce qui est plus sensible.
RT moyen:  lorsque le RT moyen de tout le trafic entrant sur une seule machine atteint le seuil, la protection du système est déclenchée, en millisecondes.
Nombre de threads simultanés:  lorsque le nombre de threads simultanés pour tout le trafic entrant sur une seule machine atteint le seuil, la protection du système est déclenchée.
Ingress QPS:  lorsque le QPS de tout le trafic entrant sur une seule machine atteint le seuil, la protection du système est déclenchée.

Le seuil QPS est fixé à 2. Quelle que soit l'interface à laquelle on accède, si le nombre d'accès atteint 2 fois en 1 seconde, le flux sera restreint.

Limiter le flux par nom de ressource

Adresse du projet cloudalibaba-sentinel-service8401

@RestController
public class RateLimitController {
    @GetMapping("/rateLimit/byUrl")
    @SentinelResource(value = "byUrl")
    public CommonResult byUrl() {
        return new CommonResult(200, "按url限流测试ok", new Payment(2020L, "serial002"));
    }

    @GetMapping("/rateLimit/customerBlockHandler")
    @SentinelResource(value = "customerBlockHandler", blockHandlerClass = CustomerHandler.class, blockHandler = "handlerException2")
    public CommonResult customerBlockHandler() {
        return new CommonResult(200, "按客户自定义限流测试ok", new Payment(2020L, "serial002"));
    }
}

Ce qui précède explique la limite actuelle en fonction du nom du service, et ce qui suit est la limite actuelle pour l'interface

Il y aura une redondance de code dans ce qui précède, et une logique de limitation du courant de traitement définie par le client est requise

Limite de courant de service définie par l'utilisateur

1. Fournissez une classe de gestion des exceptions unifiée

package org.xwb.springcloud.myhandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.xwb.springcloud.entities.CommonResult;
public class CustomerHandler {
    public static CommonResult handlerException1(BlockException blockException) {
        return new CommonResult(4444, "按照客户自定义, global handlerException-------------1");
    }
    public static CommonResult handlerException2(BlockException blockException) {
        return new CommonResult(4444, "按照客户自定义, global handlerException-------------2");
    }
}

2. @SentinelResource spécifie la classe et la méthode de limitation de courant dans le nom du service appelé

@GetMapping("/rateLimit/customerBlockHandler")
@SentinelResource(value = "customerBlockHandler", blockHandlerClass = CustomerHandler.class, blockHandler = "handlerException2")
public CommonResult customerBlockHandler() {
    return new CommonResult(200, "按客户自定义限流测试ok", new Payment(2020L, "serial002"));
}

Remarque:  blockHandlerClass spécifie la classe de classe et blockHandler spécifie la méthode spécifique dans la classe
3. Configurez le nom du service de limitation actuel

test

访问 http: // localhost: 8401 / rateLimit / customerBlockHandler

Je suppose que tu aimes

Origine blog.csdn.net/www1056481167/article/details/113695613
conseillé
Classement