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

河南网站优化外包服务上海景点

河南网站优化外包服务,上海景点,帝国做网站怎么加视频,织梦和wordpress哪个速度快目录 前言 一、Sentinel下载 二、SpringBoot 整合 Sentinel 三、流控规则 章末 前言 小伙伴们大家好,上次使用OpenFeign时用到了 Hystrix实现熔断和限流的功能,但是发现该工具已经停止维护了,于是想到了Spring Cloud Alibaba开发的Sentin…

目录

前言

一、Sentinel下载

 二、SpringBoot 整合 Sentinel

三、流控规则

章末


前言

        小伙伴们大家好,上次使用OpenFeign时用到了 Hystrix实现熔断和限流的功能,但是发现该工具已经停止维护了,于是想到了Spring Cloud Alibaba开发的Sentinel工具,也可以实现流量控制,熔断降级,系统负载保护等

一、Sentinel下载

        项目地址:Releases · alibaba/Sentinel · GitHub

1.直接下载 jar 包,到文件下载目录层级打开命令页面

 2.使用 java -jar sentinel-dashboard-1.8.7.jar 启动sentinel 

注:sentinel默认启动使用的是 8080 端口,如果担心被占用可以指定端口号

java -jar sentinel-dashboard-1.8.7.jar --server.port=8333

3.访问管理页面

         访问 http://localhost:8333/#/login ,进到登陆页面,默认登陆用户密码都是sentinel

 二、SpringBoot 整合 Sentinel

2.1 引入依赖

        我这里制定了版本,因为用的父依赖中没有引用

        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2.1.3.RELEASE</version></dependency>

2.2 配置信息 

spring:...cloud:sentinel:transport:#控制台地址配置dashboard: localhost:8333#传输端口port: 8719#暴露所有的端点
management:endpoints:web:exposure:include: "*"

2.3 启动类开启服务发现

        在启动类上加 @EnableDiscoveryClient 注解,打开服务发现功能

2.4 测试接口加注解@SentinelResource

    @SentinelResource@PostMapping(value = "/login")public BaseResult login(String username, String password) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));...return BaseResult.success();}

2.5 启动项目

        注:本地启动项目连接控制台后,发现看不到服务,可能是因为 Sentinel 本身懒加载的原因,就是说服务不被调用,sentinel 控制台是无法感知到服务的,需要手动调用一次接口刷新

        检测到服务后的界面如下:

      

三、流控规则

        3.1 基本介绍

资源名:唯一名称,默认的请求路径

针对来源:Sentinel 可以针对调用者进行限流,填写微服务名称,默认是default也就是不区分来源

阈值类型/单机阈值:

        1.QPS 每秒钟的请求数量 : 当调用该api接口的QPS到达阈值时,启动限流

        2.线程数:当调用该api的线程数达到阈值的时候,进行限流

是否集群:不需要集群

流控模式:挑默认的看下

        1.直接: api达到限流条件时,直接限流

流控效果: 

        1.快速失败 : 直接失败,抛出异常

        3.2 添加一个流控规则,限制单机阈值 QPS 为1

         3.3 注意事项

在添加流控规则的时候,可能会遇到添加失败的场景,也就是点击添加后控制台上没有显示

产生原因:可能是客户端是否使用了低版本的 fastjson,低版本的 fastjson 可能会有此问题,建议使用和 Sentinel 相关组件一致版本的 fastjson。

解决方案: 我这里升级了 fastjson 的版本之后就可以正常添加了

        <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version></dependency>

        3.4 测试接口

        因为设置的是每秒支持一个请求,所以测试的时候简单实现只要快速点击请求即可实现,结果如下,因为QPS 设置为1,所以每次通过的只有一个,拒绝 QPS 指的就是被限流请求失败的,同时到控制台看下日志,也会打出限流导致的异常日志

章末

       后续再补充熔断,负载的使用,以及搭配OpenFeign使用

        好了,文章到这里就结束了~ 

后续虽迟但到

一、sentinel 的熔断降级

        1.1、书接上文,替换 Hystrix 实现熔断降级,将 Hystrix 的配置项改为 false,另外添加 Sentinel 的配置并开启,如下图,测试下发现可以实现触发降级之后的操作,并且使用sentinel 控制台可以设置一系列的熔断操作

【远程调用✈️✈️】通过OpenFeign实现服务的远程调用,熔断降级等-CSDN博客

        1.2、熔断规则,这里的参数配置分别代表如下:

 熔断策略:

  • 慢调用比例:根据一定的时间窗口内请求的响应时间超过设定阈值的比例来触发熔断。
    例如:假设我们有一个服务,处理用户请求并返回结果。我们可以设置一个慢调用比例阈值,比如 0.5(50%)。这意味着如果有一段时间内超过一半的请求的响应时间超过了设定的阈值(比如 1秒),则触发熔断。这可以防止因为服务响应缓慢而影响整体系统性能。
  • 异常比例:根据一定的时间窗口内的请求异常比例来触发熔断。
    例如:如果某个服务的异常比例突然升高,可能会导致整个系统的可用性下降。通过设置异常比例阈值,比如 0.5(50%),当一定时间内的异常请求比例超过这个阈值时,触发熔断,防止异常的服务影响到整个系统。
  • 异常数:根据一定的时间窗口内的异常次数来触发熔断。
    例如:如果我们的服务处理了大量的异常请求,可能表明服务本身出现了问题。我们可以设置一个异常数阈值,比如每分钟超过 100 次异常请求,则触发熔断。这可以避免因为服务异常频繁而导致系统的崩溃。
  1. 最大 RT: 假设我们的服务要求在 500 毫秒内返回结果,但是由于某些原因,有些请求的响应时间超过了这个阈值。我们可以设置最大 RT 为 500 毫秒,当超过这个阈值时触发熔断,防止慢速请求占用系统资源。

  2. 熔断时长: 当熔断发生后,熔断器会进入一个打开状态,在熔断时长内拒绝所有请求。这个时长可以根据业务需求来设置,比如设置为 60 秒,表示熔断器打开后,需要等待 60 秒才能尝试恢复服务。

  3. 最小请求数: 在熔断器进入半开状态之前,需要满足一定数量的请求。比如设置最小请求数为 10,表示在尝试恢复服务之前,至少需要有 10 个请求经过熔断器。

  4. 统计时常: 统计时长用于计算慢调用比例、异常比例和异常数。比如设置统计时长为 1 分钟,则每分钟的请求数据将被用来判断是否触发熔断。

二、 sentinel 的热点规则

        新增热点规则的参数如下:

 

  1. 资源

    • 资源是需要进行限流的具体接口、URL 或方法等标识符。你需要指定哪些资源需要应用热点规则。
  2. 参数索引

    • 参数对应的 controller 中方法参数的下标,就是指对哪个方法参数作为热点参数
  3. QPS 阈值

    • QPS 阈值是指在一秒内允许通过的请求次数。当热点参数的访问频率超过该阈值时,将触发限流措施。
  4. 热点参数阈值

    • 热点参数阈值是针对热点参数的具体限流阈值。当热点参数的访问频率超过该阈值时,将触发限流。
  5. 统计时长

    • 统计时长是指统计数据的时间窗口大小,用于计算热点参数的访问频率。这个时间窗口内的请求数据将被用来判断是否触发限流。

 例如:

  1. 登录接口限流

    • 资源:/api/user/login(登录接口请求地址)
    • 参数索引:用户名(指定登录接口方法中的用户名参数为热点参数)
    • QPS 阈值:50
    • 热点参数阈值:5
    • 统计时长:1分钟
    • 这个规则将限制每个用户名在一分钟内访问 /api/user/login 接口的频率不能超过 50 次,并且对于任何单个用户名,每秒最多只能有 5 次登录请求。 

 三、总结

        不难发现,限流、熔断、热点等共同的特点就是在一个场景中,只要触发了我们提前配置好的限流策略,熔断降级,热点规则等条件,就会执行截断操作,放到代码层面来看就是相当于请求被拦截去执行指定方法,以达到对系统的保护,防止系统因过载崩溃,反过来,突发的流量激增,资源耗尽或者异常...就是请求拦截的各种场景,一旦预先配置的条件达到,就会执行相应的截断操作!

http://www.yayakq.cn/news/960929/

相关文章:

  • 商业网站建设案例课程网站建设应考虑哪些方面的问题
  • 网站做跳转链接的好处如何让网站打不开 解析
  • 实名网站空间如何打击网站
  • 重庆网站制作公司多少钱做的网站在百度搜索不到
  • asp图片源码网站搜索引擎平台排名
  • 有个电商网站模板网页设计页面布局结构
  • 怎么做交易猫钓鱼网站棋牌软件开发源代码
  • 网站后台更新后主页没有变化wordpress 满屏主题
  • 海城网站设计用小程序做视频网站
  • 视频收费网站怎么做上海网络营销策划
  • 北京专业做网站网页制作软件html
  • 吉安seo网站快速排名html5手机网站整套模板
  • 中国十佳企业网站设计公司电子商务网站的网站架构
  • 重庆网站建设cq600wordpress模版下载
  • 哪些网站可以做问卷调查网站制作费用多少
  • 正规的app网站开发网站建设公司广告标题语
  • 深圳建站程序网站开发雷小天
  • 制作网站需要学什么软件有哪些内容甘孜商城网站建设
  • 上海做网站的公司排名wordpress主页 无法连接数据库
  • 做python一个网站房地产新闻稿
  • 百度智能云网站建设微信如何做有趣的短视频网站
  • 郑州建设网站推广公司手机网页制作尺寸
  • 制作门户网站专业做辅助的网站
  • 网站开发数据库连接失败免费跨境电商网站
  • 网站建设通俗讲网站建设与管理课程心得体会
  • 网站设计价格dede网站架设教程
  • 成品网站前台源码网页制作人员的工作内容
  • 百达翡丽手表网站wordpress 社交网站吗
  • vue 做网站 seowordpress 分段
  • 网站搭建设计是什么意思局域网 wordpress