日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

spring cloud zuul 與 sentinel的結(jié)合使用操作

瀏覽:28日期:2023-07-06 16:29:48
spring cloud zuul 與 sentinel結(jié)合

本來大型服務(wù)處理請(qǐng)求超時(shí),限流,降級(jí)熔斷工作用hystrix,但是這個(gè)這個(gè)項(xiàng)目不再更新了,雖說它現(xiàn)在提供的版本不會(huì)影響到大多數(shù)開發(fā)者的使用,但是長(zhǎng)遠(yuǎn)考慮,被更換是一件必然的事,而且現(xiàn)在像resilience4j, Sentinel這樣的替代品出現(xiàn),今天我們就看看使用zuul 與 Sentinel整合,實(shí)現(xiàn)降級(jí)與超時(shí)處理,其實(shí)網(wǎng)上有很多這樣的教程,這里我只是做一個(gè)自己的筆記而已

1、必須的依賴

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency><dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-zuul-adapter</artifactId> <version>1.7.1</version></dependency>2、配置文件,其實(shí)Sentinel在這里沒什么配置

server: port: 6001spring: application: name: e-zuuleureka: instance: hostname: localhost lease-expiration-duration-in-seconds: 90 #表示服務(wù)端多長(zhǎng)時(shí)間沒有接受到心跳信息后可以刪除自己 lease-renewal-interval-in-seconds: 30 #表示需要要向服務(wù)端發(fā)送信息,表示自己還活著 ip-address: true client: healthcheck: enabled: true #客戶端心跳檢測(cè) service-url: defaultZone: http://${eureka.instance.hostname}:3001/eureka/zuul: add-proxy-headers: true LogFilter: pre: disable=true: routes: e-email: serviceId: e-email path: /email/** e-user: serviceId: e-user path: /user/**3、配置類, 其實(shí)配置類和后邊的降級(jí)回調(diào)處理類才是關(guān)鍵

而且配置類中幾個(gè)關(guān)于zuul與Sentinel的過濾器非常關(guān)鍵,這里要是不提供它們,將無法實(shí)現(xiàn)我們想要的功能,還有就是網(wǎng)關(guān)規(guī)則,可以選擇qps, 超時(shí),線程等,setGrade(RuleConstant.DEGRADE_GRADE_RT)提供選擇不同的策略

package com.mjlf.ezuul.config;import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule;import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayRuleManager;import com.alibaba.csp.sentinel.adapter.gateway.zuul.fallback.ZuulBlockFallbackManager;import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulErrorFilter;import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPostFilter;import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPreFilter;import com.alibaba.csp.sentinel.slots.block.RuleConstant;import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule;import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager;import com.netflix.zuul.ZuulFilter;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;import java.util.HashSet;import java.util.Set;@Configurationpublic class ZuulConfig { @Bean public ZuulFilter sentinelZuulPreFilter() {// We can also provider the filter order in the constructor.return new SentinelZuulPreFilter(); } @Bean public ZuulFilter sentinelZuulPostFilter() {return new SentinelZuulPostFilter(); } @Bean public ZuulFilter sentinelZuulErrorFilter() {return new SentinelZuulErrorFilter(); } @PostConstruct public void doInit() {// 注冊(cè) FallbackProviderZuulBlockFallbackManager.registerProvider(new MyBlockFallbackProvider());initGatewayRules(); } /** * 配置限流規(guī)則 */ private void initGatewayRules() {Set<GatewayFlowRule> rules = new HashSet<>();rules.add(new GatewayFlowRule('e-user').setCount(3) // 限流閾值.setIntervalSec(1) // 統(tǒng)計(jì)時(shí)間窗口,單位是秒,默認(rèn)是 1 秒);rules.add(new GatewayFlowRule('e-user').setGrade(RuleConstant.DEGRADE_GRADE_RT)//設(shè)置超時(shí)類型規(guī)則.setMaxQueueingTimeoutMs(500));GatewayRuleManager.loadRules(rules); }}4、回調(diào)處理類,當(dāng)有請(qǐng)求被攔截到后,就會(huì)調(diào)用降級(jí)回調(diào)方法

// 自定義 FallbackProvider@Componentpublic class MyBlockFallbackProvider implements ZuulBlockFallbackProvider { private Logger logger = LoggerFactory.getLogger(DefaultBlockFallbackProvider.class); // you can define route as service level @Override public String getRoute() {return '*'; } @Override public BlockResponse fallbackResponse(String route, Throwable cause) {RecordLog.info(String.format('[Sentinel DefaultBlockFallbackProvider] Run fallback route: %s', route));if (cause instanceof BlockException) { return new BlockResponse(429, 'Sentinel block exception', route);} else { return new BlockResponse(500, 'System Error', route);} }}zuul集成Sentinel最新的網(wǎng)關(guān)流控組件一、說明

Sentinel 網(wǎng)關(guān)流控支持針對(duì)不同的路由和自定義的 API 分組進(jìn)行流控,支持針對(duì)請(qǐng)求屬性(如 URL 參數(shù),Client IP,Header 等)進(jìn)行流控。

Sentinel 1.6.3 引入了網(wǎng)關(guān)流控控制臺(tái)的支持,用戶可以直接在 Sentinel 控制臺(tái)上查看 API Gateway 實(shí)時(shí)的 route 和自定義 API 分組監(jiān)控,管理網(wǎng)關(guān)規(guī)則和 API 分組配置。

spring cloud zuul 與 sentinel的結(jié)合使用操作

二、功能接入

1. 網(wǎng)關(guān)添加sentinel相關(guān)的jar依賴

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId></dependency><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId></dependency>

2. 網(wǎng)關(guān)zuul的sentinel配置

spring: # sentinel動(dòng)態(tài)配置規(guī)則 cloud: sentinel: zuul:enabled: trueorder: pre: 2000 post: 500 error: -100 filter:enabled: false datasource:# 限流ds1: nacos: server-addr: ${zlt.nacos.server-addr} dataId: ${spring.application.name}-sentinel-gw-flow groupId: DEFAULT_GROUP rule-type: gw-flow# api分組ds2: nacos: server-addr: ${zlt.nacos.server-addr} dataId: ${spring.application.name}-sentinel-gw-api-group groupId: DEFAULT_GROUP rule-type: gw-api-group

綁定gw-flow(限流)和gw-api-group(api分組)的規(guī)則數(shù)據(jù)源為nacos并指定nacos上對(duì)應(yīng)的dataId和groupId

3. nacos規(guī)則配置

3.1. 限流配置gw-flow

spring cloud zuul 與 sentinel的結(jié)合使用操作

Data ID:api-gateway-sentinel-gw-flow

Group:DEFAULT_GROUP

配置內(nèi)容:

[ { 'resource': 'user', 'count': 0, 'paramItem': { 'parseStrategy': 3, 'fieldName': 'name' } }, { 'resource': 'uaa_api', 'count': 0 }]

規(guī)則1:所有user的請(qǐng)求只要參數(shù)帶有name的都攔截(qps=0),user為zuul路由配置上的routeId規(guī)則2:api分組為uaa_api的所有請(qǐng)求都攔截(qps=0)

3.2. api分組配置gw-api-group

spring cloud zuul 與 sentinel的結(jié)合使用操作

Data ID:api-gateway-sentinel-gw-api-group

Group:DEFAULT_GROUP

配置內(nèi)容:

[ { 'apiName': 'uaa_api', 'predicateItems': [ {'pattern': '/user/login' }, {'pattern': '/api-uaa/oauth/**','matchStrategy': 1 } ] }]

上面配置意思為滿足規(guī)則的api都統(tǒng)一分組為uaa_api分組規(guī)則1:精準(zhǔn)匹配/user/login分組規(guī)則2:前綴匹配/api-uaa/oauth/**

4. 網(wǎng)關(guān)zuul啟動(dòng)參數(shù)

需要在接入端原有啟動(dòng)參數(shù)的基礎(chǔ)上添加-Dcsp.sentinel.app.type=1啟動(dòng)以將您的服務(wù)標(biāo)記為 API Gateway,在接入控制臺(tái)時(shí)您的服務(wù)會(huì)自動(dòng)注冊(cè)為網(wǎng)關(guān)類型,然后您即可在控制臺(tái)配置網(wǎng)關(guān)規(guī)則和 API 分組,例如:

java -Dcsp.sentinel.app.type=1 -jar zuul-gateway.jar三、sentinel控制臺(tái)管理

API管理(分組)

spring cloud zuul 與 sentinel的結(jié)合使用操作

網(wǎng)關(guān)流控規(guī)則

spring cloud zuul 與 sentinel的結(jié)合使用操作

四、測(cè)試限流api

1. 測(cè)試限流規(guī)則1

所有user的請(qǐng)求只要參數(shù)帶有name的都攔截(qps=0)

不加name參數(shù),可以訪問api

spring cloud zuul 與 sentinel的結(jié)合使用操作

后面加上name參數(shù),請(qǐng)求被攔截

spring cloud zuul 與 sentinel的結(jié)合使用操作

2. 測(cè)試限流規(guī)則2

api分組為uaa_api的所有請(qǐng)求都攔截(qps=0)

前綴匹配/api-uaa/oauth/**

spring cloud zuul 與 sentinel的結(jié)合使用操作

精準(zhǔn)匹配/user/login

spring cloud zuul 與 sentinel的結(jié)合使用操作

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
福利一区视频| 久久中文字幕一区二区三区| 黄色网一区二区| 国产精品s色| 日韩成人亚洲| 国产在线观看www| 亚洲黄色在线| 亚洲一区久久| 日韩av在线免费观看不卡| 午夜精品婷婷| 国产在线一区不卡| 国产网站在线| 久久久人人人| 波多视频一区| 亚洲高清av| 91久久中文| 亚洲我射av| 911亚洲精品| 国产精品久久久网站| 国语对白精品一区二区| 免费高潮视频95在线观看网站| 精品一区在线| 日韩视频中文| 欧美有码在线| 神马午夜在线视频| 一区三区视频| 日韩国产欧美视频| 国产一区二区三区四区| 亚洲国产福利| 亚洲一区日韩在线| 国产欧美自拍| 久久亚洲精品中文字幕蜜潮电影| 亚洲欧美久久| 国产精品一国产精品k频道56| 97精品一区| 老牛国产精品一区的观看方式| 国产日韩欧美一区二区三区| 日韩av自拍| 免费在线观看精品| 欧美激情日韩| 欧美va天堂在线| 国产视频一区二| 桃色一区二区| 首页欧美精品中文字幕| 国产精品久久亚洲不卡| 亚洲精品福利电影| 一区二区国产精品| 精品美女在线视频| 亚洲成人日韩| 国产麻豆一区二区三区精品视频| 色婷婷精品视频| 日韩在线观看一区二区三区| 激情中国色综合| 视频一区视频二区在线观看| 国产精品一区二区av交换| 99精品美女| 奇米狠狠一区二区三区| 中文在线а√在线8| 九九在线精品| 欧美日韩va| 欧美日韩四区| 国产精品久久乐| 黄色不卡一区| 麻豆视频久久| 蜜臀国产一区二区三区在线播放| 国产激情在线播放| 亚洲精品激情| 99久久婷婷这里只有精品| 国产午夜精品一区在线观看| 国产网站在线| 国产精品一页| 日韩欧美一区二区三区免费观看| 日韩av一区二区三区四区| 你懂的亚洲视频| 国产偷自视频区视频一区二区| 国产a亚洲精品| 7m精品国产导航在线| 中文日韩在线| 久久国产日韩| www.九色在线| 麻豆中文一区二区| 日韩激情综合| 国产精品试看| 久久精品中文| 国产精品99一区二区三| 青草av.久久免费一区| 亚洲一区激情| 国产精品99一区二区| 国产精品羞羞答答在线观看| 男人操女人的视频在线观看欧美| 91精品一区二区三区综合在线爱| 精品精品99| 国产精品午夜一区二区三区| 亚洲人妖在线| 亚洲视频二区| 日韩黄色大片| 高清一区二区三区| 日韩av网站在线免费观看| 亚洲精品国产偷自在线观看| 日韩高清欧美激情| 蜜桃久久av一区| 人人香蕉久久| 在线看片国产福利你懂的| 亚洲制服欧美另类| 羞羞答答国产精品www一本 | 国产日韩欧美一区| 日韩一二三区在线观看| 91偷拍一区二区三区精品| 国产精品午夜av| 亚洲伊人影院| 国产精品呻吟| 91精品国产调教在线观看| 麻豆精品在线| 欧美在线首页| 日韩va亚洲va欧美va久久| 综合色一区二区| 国产一区亚洲| 久久久久网站| 亚洲香蕉网站| 91精品国产成人观看| 999国产精品视频| 欧美综合另类| 黄色亚洲大片免费在线观看| 精品在线99| 欧美中文日韩| 中文一区一区三区免费在线观 | 嫩呦国产一区二区三区av| 国产精品17p| 老鸭窝一区二区久久精品| 精品深夜福利视频| 久久精品一本| 欧美男人天堂| 亚洲激情中文在线| 国产精品丝袜xxxxxxx| 视频一区欧美精品| 亚洲日本欧美| 国产精品久久久久久久久久妞妞| 日韩av一二三| 久久超级碰碰| 成人国产精品| 99热国内精品| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲美女91| 国产精品一区亚洲| 91综合视频| 伊人久久成人| 日韩一区二区三区四区五区| 国产欧美一区二区精品久久久 | 99riav国产精品| 久久夜色精品| 欧美综合社区国产| 精品久久美女| 精品日韩毛片| 日韩视频一二区| 精品亚洲免a| 国产精品片aa在线观看| 亚洲一区亚洲| 久久精品免视看国产成人| 一区视频在线| 美腿丝袜亚洲一区| 欧美一区二区性| 成人日韩精品| 国产一区二区三区不卡视频网站 | 亚洲伦乱视频| 日韩福利视频一区| 日本免费一区二区视频| 青青草91久久久久久久久| 久久不见久久见国语| 久久人人97超碰国产公开结果| 亚洲一区二区成人| 国产乱码精品| 99久久99视频只有精品| 亚洲精品高潮| caoporn视频在线| 首页欧美精品中文字幕| 欧美韩一区二区| 国产高清一区| 亚洲精品韩国| 成人台湾亚洲精品一区二区| 中文精品在线| 精品国产麻豆| 亚洲久久视频| 91看片一区| 免费看精品久久片| 国产不卡人人| 91精品视频一区二区| 香蕉人人精品| 国产精品大片| 欧美日韩四区| 国产成人精品福利| 亚洲久久一区| 韩国三级一区| 日韩国产91| 久久久久久免费视频| 久久国内精品| 久久xxxx| 久久黄色影院| 另类欧美日韩国产在线| 免费一级片91| 亚洲高清激情|