Sentinelはゲートウェイでフロー制御を実行します

ゲートウェイプロジェクトにMavenの依存関係を追加する

<!-- 引入 sentinel跟网管层的整合 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

application.ymlに構成情報を追加します

#配置sentinel
spring:
    sentinel:
      transport:
        dashboard: localhost:8883
        #控制台的port
        port: 8719

センチネルページでゲートウェイメニューバーを開き、フロー制御ルール
ここに画像の説明を挿入
API名が構成ファイルで構成されたserverIdである
ここに画像の説明を挿入
ことを追加します。次に、トラフィックが大きすぎる場合、トラフィックが大きすぎる場合にトリガーされる例外をカスタマイズします。以下の情報がフロントエンドページにトリガーされます


import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.BlockRequestHandler;
import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager;
import com.alibaba.fastjson.JSON;
import com.hjh.common.exception.BizCodeEnume;
import com.hjh.common.utils.R;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.server.ServerResponse;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

/**
 * @date 2021-02-22 2:19 下午
 * @description sentinel网关层 返回我们自己的东西错误代码
 *      TODO 响应式编程 - 天然支持大并发系统
 */
@Configuration
public class MySeckillSentinelConfig {
    
    

    public MySeckillSentinelConfig() {
    
    
        GatewayCallbackManager.setBlockHandler(new BlockRequestHandler() {
    
    

            /**
             * 网关限流了请求,就会掉用此方法 Mono Flux
             */
            @Override
            public Mono<ServerResponse> handleRequest(ServerWebExchange serverWebExchange, Throwable throwable) {
    
    
                R error = R.error(BizCodeEnume.TO_MANY_REQUEST.getCode(), BizCodeEnume.TO_MANY_REQUEST.getMsg());
                String s = JSON.toJSONString(error);
                Mono<ServerResponse> body = ServerResponse.ok().body(Mono.just(s), String.class);
                return body;
            }
        });
    }
}

通常の状態でリクエストが返されるときの通常のデータリクエスト
ここに画像の説明を挿入
によって返されるデータが大きすぎます
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/u014496893/article/details/114379248