当前位置: 首页 > news >正文

vs2013做简单的网站搜索引擎推广和优化方案

vs2013做简单的网站,搜索引擎推广和优化方案,锦州网站建设,专业的食品行业网站开发Sentinel数据持久化 前面介绍Sentinel的流控、熔断降级等功能,同时Sentinel应用也在面临着一个问题:我们在Sentinel后台管理界面中配置了一堆流控、降级规则,但是Sentinel一重启,这些规则全部消失了。那么我们就要考虑Sentinel的持…

Sentinel数据持久化

前面介绍Sentinel的流控、熔断降级等功能,同时Sentinel应用也在面临着一个问题:我们在Sentinel后台管理界面中配置了一堆流控、降级规则,但是Sentinel一重启,这些规则全部消失了。那么我们就要考虑Sentinel的持久化问题。

Sentinel为我们提供了几种持久化的解决方案:

  • 存储到文件
  • 使用Redis存储
  • 使用Nacos存储
  • 使用Zookeeper存储
  • 使用Apollo存储

我们这里采用Nacos的方式进行存储这些数据。

Tip:既然使用Nacos进行持久化这些Sentinel规则数据,那么你的Nacos首先肯定是已经具备了持久化的环境的~~

实现持久化

pom.xml文件加入Nacos数据源的依赖

<!-- sentinel持久化访问Nacos的数据源依赖 -->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

修改bootstrap.yml文件,增加datasource的配置

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址sentinel:transport:port: 8719 # 启动http server,并且该服务与Sentinel仪表板进行交互,使sentinel可以控制应用,若端口占用则8719+1依次扫描dashboard: 127.0.0.1:8080 # 仪表版访问地址datasource: # sentinel数据源ds1:	# 自定义连接名nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds1 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: flow # flow表示流控规则

rule-type中的值,可以参考RuleType枚举类

五种规则持久化到Nacos中

  • authority(授权规则)
  • degrade(降级规则)
  • flow(流控规则)
  • param(热点规则)
  • system(系统规则)

当你的rule-type没设置时,程序启动时会报空指针异常

在Nacos的控制面板新建sentinel-consumer-ds1的DataId,具体配置内容如下:

[{"resource":"/sentinelTestB","limitApp":"default","grade": 1,"count": 1,"strategy": 0,"controlBehavior": 0,"clusterMode": false}
]

首先在Nacos后台管理界面上配置DataId和GroupId一定是和配置文件中一一对应的,json中[]表示可以配置多个

  • resource:表示资源名称
  • limitApp:表示要限制哪些来源的调用
  • grade:阈值类型,取值参考RuleConstant类(0–线程数限流 1–QPS限流)
  • count:表示限流阈值
  • strategy:表示流控模式,0表示直接,1表示关联,2表示链路
  • controlBehavior:流控效果(0表示快速失败,1表示Warm Up,2表示排队等待)

那么这些参数,不同的规则该设置哪些参数呢,可以去参考某些规则类查看

  • 流控规则:FlowRule

  • 熔断降级:DegradeRule

    字段说明默认值
    resource资源名,即规则的作用对象
    grade熔断策略,支持慢调用比例/异常比例/异常数策略慢调用比例
    count慢调用比例模式下为慢调用临界 RT(超出该值计为慢调用);异常比例/异常数模式下为对应的阈值
    timeWindow熔断时长,单位为 s
    minRequestAmount熔断触发的最小请求数,请求数小于该值时即使异常比率超出阈值也不会熔断(1.7.0 引入)5
    statIntervalMs统计时长(单位为 ms),如 60*1000 代表分钟级(1.8.0 引入)1000 ms
    slowRatioThreshold慢调用比例阈值,仅慢调用比例模式有效(1.8.0 引入)
  • 热点规则:ParamFlowRule

    字段说明默认值
    resource资源名,即规则的作用对象
    grade限流模式QPS 模式
    count限流阈值,必填
    durationInSec统计窗口时间长度(单位为秒),1.6.0 版本开始支持1s
    controlBehavior流控效果(支持快速失败和匀速排队模式),1.6.0 版本开始支持快速失败
    maxQueueingTimeMs最大排队等待时长(仅在匀速排队模式生效),1.6.0 版本开始支持0
    paramIdx热点参数的索引,必填,对应 SphU.entry(xxx, args) 中的参数索引位置
    paramFlowItemList参数例外项,可以针对指定的参数值单独设置限流阈值,不受前面 count 阈值的限制。仅支持基本类型和字符串类型

这些json的规则除了可以在Sentinel控制面板控制之外,还可以用Java代码的方式,但是不够灵活。

配置好上面的属性后,使用Jmeter请求/sentinelTestB接口,测试流控效果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QU9fy6um-1690078521125)(../imgs4/1.png)]

可以看到,流控已经生效了。再到sentinel仪表板中看下:

在这里插入图片描述

已经生成好了一个流控规则。

再来试试降级规则

bootstrap.yml中增加ds2数据源

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址sentinel:transport:port: 8719 # 启动http server,并且该服务与Sentinel仪表板进行交互,使sentinel可以控制应用,若端口占用则8719+1依次扫描dashboard: 127.0.0.1:8080 # 仪表版访问地址datasource: # sentinel数据源ds1:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds1 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: flow # flow表示流控规则ds2:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds2 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: degrade # degrade表示降级规则

nacos面板中添加sentinel-consumer-ds2文件

[{"resource":"/sentinelTest","count":1,"grade":2,"timeWindow":5,"minRequestAmount":1}
]
  • timeWindow:表示时间窗口,熔断的时间数。
  • count:阈值
  • grade:降级策略,参考RuleConstant类(0-RT 1-异常比例 2-异常数)

以上配置,我们的/sentinelTest模拟一个异常,然后用Jmeter多次请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwozYNFW-1690078521127)(../imgs4/3.png)]

进入熔断降级。

最后再来看下系统规则的一个实例

bootstrap.yml中

server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址sentinel:transport:port: 8719 # 启动http server,并且该服务与Sentinel仪表板进行交互,使sentinel可以控制应用,若端口占用则8719+1依次扫描dashboard: 127.0.0.1:8080 # 仪表版访问地址datasource: # sentinel数据源ds1:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds1 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: flow # flow表示流控规则ds2:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds2 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: degrade # degrade表示降级规则ds3:nacos:server-addr: localhost:8848 # nacos服务地址dataId: sentinel-consumer-ds3 # nacos的dataIdgroupId: DEFAULT_GROUP # 默认分组data-type: json # 数据类型 json类型rule-type: system # system表示系统规则

在nacos中新增 ds3的,sentinel-consumer-ds3文件

[{"qps":1}
]

系统规则对应的是SystemRule类,有以下几个属性:

  • avgRt:系统平均响应时间
  • highestCpuUsage:CPU使用率
  • highestSystemLoad:负载
  • maxThread:最大线程数
  • qps:每秒处理的请求数量

新增一个/sentinelTestC的资源,然后使用Jmeter压测一下,系统规则是系统级别的,即相对于资源的流控是比较粗粒度的了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SagtgDhy-1690078521128)(../imgs4/4.png)]

同样地,其他的规则,可以找到它对应的Java配置方法,找到那个类,举一反三,将对应的配置修改一下就可以了。

有两个点需要注意下:

  • 在Nacos控制台修改规则,Sentinel这边的规则会即时生效,重启服务后依然是有效的,毕竟已经做好持久化了
  • 在Sentinel控制台修改的规则,不会被修改到nacos中,重启后还会变为nacos设置的值
http://www.skylitedrivein.com/news/730.html

相关文章:

  • 最新的网站建设软件如何自己做引流推广
  • 如何做网站优化佛山优化网站关键词
  • 左侧伸缩隐藏菜单时尚flash网站商丘网络推广哪家好
  • 多合一建网站发稿网
  • 做网站做seo整站优化外包公司
  • 给公司建立网站吗seo搜索引擎优化是做什么的
  • 合肥哪里做网站it培训机构排行榜
  • 网站建设属于前端还是后台app推广公司怎么对接业务
  • 桂林旅游网站建设seo点击排名工具有用吗
  • 酒店网站建设流程疫情最新情况 最新消息 全国
  • 济南企业网站建设公司重庆seo入门教程
  • 淘宝客手机网站开发腾讯3大外包公司
  • 网站制作公司加盟seo入门培训学多久
  • 做外贸公司 网站西安网约车
  • 忘了网站链接怎么做江西seo
  • 一个空间多个php网站今日重大新闻头条财经
  • 网站开发问卷调查如何免费自己创建网站
  • 做渔船的网站自建网站
  • 低价格制作网站自己怎么给网站做优化排名
  • 怎么给公司做网站路由优化大师
  • 基于jsp企业网站开发设计答辩ppt流量神器
  • 商城网站建设模板2023年6月疫情情况
  • 长春网站制作价格谷歌官方网站注册
  • 开一间网站建设有限公司seo网页推广
  • 哪些网站是动态网站北京营销公司排行榜
  • 免备案网站空间成功营销十大经典案例
  • 亚太建设科技信息研究院网站seo网络推广到底是做什么的
  • 温州做网站的怎样做搜索引擎推广
  • 辽宁高端网站建设网站推广是做什么的
  • 网站信息服务费怎么做凭证seo教程优化