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

学校网站建设联系电话公司地址查询网站

学校网站建设联系电话,公司地址查询网站,胶州专业建站,聚名网页版文章目录 目录 文章目录 前言 一、解决微服务雪崩的问题 二、使用步骤 三、熔断器的使用 3.1 限流规则 3.1.1流控模式 3.1.2流控效果 3.2 隔离和降级 3.2.1 隔离 3.2.2 降级 四、sentinel规则持久化 总结 前言 在基于 SpringCloud 构建的微服务体系中#xff0c;服务间的调用… 文章目录 目录 文章目录 前言 一、解决微服务雪崩的问题 二、使用步骤 三、熔断器的使用 3.1 限流规则 3.1.1流控模式  3.1.2流控效果 3.2 隔离和降级 3.2.1 隔离 3.2.2 降级   四、sentinel规则持久化 总结 前言 在基于 SpringCloud 构建的微服务体系中服务间的调用链路会随着系统的演进变得越来越长这无疑会增加了整个系统的不可靠因素。在并发流量比较高的情况下由于网络调用之间存在一定的超时时间链路中的某个服务出现宕机都会大大增加整个调用链路的响应时间而瞬间的流量洪峰则会导致这条链路上所有服务的可用线程资源被打满从而造成整体服务的不可用这也就是我们常说的 “雪崩效应”。而在微服务系统设计的过程中为了应对这样的糟糕情况最常用的手段就是进行 ”流量控制“ 以及对网络服务的调用实现“熔断降级”。因此Sentinel 就因运而生了。 Sentinel 是一款面向分布式服务架构的轻量级流量控制组件主要以流量为切入点从流量控制、熔断降级、系统自适应保护等多个维度来保障服务的稳定性核心思想是根据对应资源配置的规则来为资源执行相应的流控/降级/系统保护策略 一、解决微服务雪崩的问题 解决雪崩问题的常见方式有四种 超时处理设定超时时间请求超过一定时间没有响应就返回错误信息不会无休止等待舱壁模式限定每个业务能使用的线程数避免耗尽整个tomcat的资源因此也叫线程隔离。熔断降级由断路器统计业务执行的异常比例如果超出阈值则会熔断该业务拦截访问该业务的一切请求。流量控制限制业务访问的QPS避免服务因流量的突增而故障。如何避免因瞬间高并发流量而导致服务故障 •流量控制 如何避免因服务故障引起的雪崩问题 •超时处理 •线程隔离 •降级熔断 Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址home | Sentinel Sentinel 具有以下特征: •丰富的应用场景Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景例如秒杀即突发流量控制在系统容量可以承受的范围、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 •完备的实时监控Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据甚至 500 台以下规模的集群的汇总运行情况。 •广泛的开源生态Sentinel 提供开箱即用的与其它开源框架/库的整合模块例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 完善的 SPI 扩展点Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。 二、使用步骤 首先下载sentinel控制台jar包  然后在该目录下打开cmd  启动该jar包 java -Dserver.port8888 -jar sentinel-dashboard-1.8.6.jar 微服务整合Sentinel 我们在order-service中整合Sentinel并且连接Sentinel的控制台步骤如下 !--sentinel--dependency     groupIdcom.alibaba.cloud/groupId    artifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency 然后在配置文件中接入 spring:   cloud:     sentinel:       transport:         dashboard: localhost:8888   这样就完成了一个微服务的接入熔断 其他类似  三、熔断器的使用 3.1 限流规则 3.1.1流控模式 在添加限流规则时点击高级选项可以选择三种流控模式 •直接统计当前资源的请求触发阈值时对当前资源直接限流也是默认的模式 •关联统计与当前资源相关的另一个资源触发阈值时对当前资源限流 •链路统计从指定链路访问到本资源的请求触发阈值时对指定链路限流 在使用链路的时候需要添加识别的注解来让熔断器识别到底层方法 SentinelResource(goods)public void queryGoods() {     System.err.println(查询商品); } •Sentinel默认会将Controller方法做context整合导致链路模式的流控失效需要修改application.yml添加配置 spring:   cloud:     sentinel:       web-context-unify: false # 关闭context整合   流控模式有哪些 •直接对当前资源限流 •关联高优先级资源触发阈值对低优先级资源限流。 •链路阈值统计时只统计从指定资源进入当前资源的请求是对请求来源的限流   3.1.2流控效果 流控效果是指请求达到流控阈值时应该采取的措施包括三种 •快速失败达到阈值后新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。•warm up预热模式对超出阈值的请求同样是拒绝并抛出异常。但这种模式阈值会动态变化从一个较小值逐渐增加到最大阈值。•排队等待让所有的请求按照先后次序排队执行两个请求的间隔不能小于指定时长比如1s 10个qps 排队等待效果就是在某这时刻 一瞬间全都进到队列里面等待 每个请求处理200ms 这个时候队列是满的 如果第一请求还没处理好那么后面超过该队列总的等待时间的请求就会直接被拒绝但是随着处理后面的请求再来的时候有可能因为已经处理过了而刚好进入到队列中等待这时候该请求就不会被限制  流控效果有哪些 •快速失败QPS超过阈值时拒绝新的请求 •warm up QPS超过阈值时拒绝新的请求QPS阈值是逐渐提升的可以避免冷启动时高并发导致服务宕机。 •排队等待请求会进入队列按照阈值允许的时间间隔依次执行请求如果请求预期等待时长大于超时时间直接拒绝 热点参数限流的时候需要给该限流的控制层方法添加SentinelResource(hot) 来让限流生效 3.2 隔离和降级 3.2.1 隔离 Feign整合Sentinel SpringCloud中微服务调用都是通过Feign来实现的因此做客户端保护必须整合Feign和Sentinel。 1.修改OrderService的application.yml文件开启Feign的Sentinel功能 在配置文件中开启该功能 feign:   sentinel:     enabled: true # 开启Feign的Sentinel功能 2.给FeignClient编写失败后的降级逻辑 ①方式一FallbackClass无法对远程调用的异常做处理 方式二FallbackFactory可以对远程调用的异常做处理我们选择这种 先写一个降级后的处理类  Component public class ProductFeignFactory implements FallbackFactoryProductFegin {Overridepublic ProductFegin create(Throwable throwable) {return new ProductFegin() {Overridepublic Product findById(Integer pid) {Product product new Product();product.setPid(1);product.setPname(系统繁忙);return product;}};} } 然后开启 /*** author Student王心* date Created in 2023/2/11 15:30* description* fallbackFactory 远程调用微服务出现故障 则执行降级的业务代码* modified By* version:*/ //value里面表示服务名称openfeign用来远程调用的这个接口主要说明需要调用那个微服务名称 FeignClient(value xin-spring-cloud-product,fallbackFactory ProductFeignFactory.class) public interface ProductFegin {//该路径还有提交方式必须跟提供者的路径和提交方式保持一致GetMapping(/product/getById/{pid})public Product findById(PathVariable Integer pid); } 这样就完成了对远程调用的异常处理 线程隔离的两种手段是 •信号量隔离 •线程池隔离 信号量隔离的特点是 •基于计数器模式简单开销小 线程池隔离的特点是 •基于线程池模式有额外开销但隔离控制更强 3.2.2 降级  Sentinel熔断降级的策略有哪些 •慢调用比例超过指定时长的调用为慢调用统计单位时长内慢调用的比例超过阈值则熔断 •异常比例统计单位时长内异常调用的比例超过阈值则熔断 •异常数统计单位时长内异常调用的次数超过阈值则熔断   四、sentinel规则持久化 java -Dserver.port8888 -Dnacos.serverAddrlocalhost:8848 -Dnacos.namespacenacos的命名空间id -jar sentinel-dashboard.jar # -Dserver.port 控制台端口号 # -Dnacos.serverAddr nacos 地址 # -Dnacos.namespace 你项目所在的 nacos 命名空间 如果命名空间就是public可以省略该参数 然后进入控制台使用所有带2的进行操作就可以了 微服务接入 dependency             groupIdcom.alibaba.csp/groupId             artifactIdsentinel-datasource-nacos/artifactId             version1.8.1/version         /dependency 修改该微服务的配置文件 spring.application.namexin-spring-cloud-order #配置中心 spring.cloud.nacos.config.server-addr127.0.0.1:8848 #额外的配置 spring.cloud.nacos.config.extension-configs[0].data-iddatasource.properties spring.cloud.nacos.config.extension-configs[0].groupDEFAULT_GROUP spring.cloud.nacos.config.extension-configs[0].refreshtrue#配置熔断器 spring.cloud.sentinel.transport.dashboardlocalhost:8888 #控制面板修改规则后可以通过该端口把规则发给微服务 spring.cloud.sentinel.transport.port8719#关闭引起链路模式的流控失败的上下文 spring.cloud.sentinel.web-context-unifyfalse#开启feign的Sentinel功能 feign.sentinel.enabledtruespring.cloud.nacos.server-addrlocalhost:8848spring.cloud.nacos.config.namespacenacos命名空间id spring.cloud.nacos.config.groupaaa#配置持久化规则 spring.cloud.sentinel.datasource.aaa-flow.nacos.server-addrlocalhost:8848 spring.cloud.sentinel.datasource.aaa-flow.nacos.namespace${spring.cloud.nacos.config.namespace} spring.cloud.sentinel.datasource.aaa-flow.nacos.group-idSENTINEL_GROUP spring.cloud.sentinel.datasource.aaa-flow.nacos.data-id${spring.application.name}-flow-rules spring.cloud.sentinel.datasource.aaa-flow.nacos.rule-typeflow spring.cloud.sentinel.datasource.aaa-flow.nacos.data-typejson 这样就完成了持久化 总结 待补充
http://www.dnsts.com.cn/news/14468.html

相关文章:

  • 优跃达官网网站建设项目有自己团队做网站上线多久
  • 您有新信息 建设招标网官方网站17网站一起做网店新塘
  • 智达世通建设集团有限公司网站wordpress主题添加字体设置
  • 织梦网站管理安装免费的手机网站模板
  • 企业免费网站推广公司小程序模板大全
  • 东莞哪家网站建设专业小游戏制作开发
  • 做球迷网站济南网络招聘
  • 亚洲做性视频网站网站策划编辑如何做
  • c语言怎么做网站重庆网站建公司大全
  • 网站移动端指的是什么网站类别标签文本
  • 寮步做网站济南j建设网
  • 广东网站建设哪里有赣州门户网站建设
  • 网站租用泸州网站建设公司
  • 建设网站服务商小白学网站建设与设计书
  • iis网站主目录阿里云网站更换域名
  • 西安关键词网站排名输入关键词就能写文章的软件
  • 网站可以同时做竞价和优化吗注册门户网站
  • 专业制作网站服务wordpress静态页生成
  • 喜欢网站建设学什么专业微信网站改版价格
  • 做网站人wordpress 管理密码
  • 网站开发房源岗位网站定位
  • 北京建网站公司哪家便宜广告免费设计在线生成
  • 网站开发过程分为哪几个阶段lnmp 网站开发总结
  • 佛山网站设计代理商泰国做彩票网站
  • 网站开发客户wordpress常见问题
  • 做汽车商城网站seo自助建站平台
  • 网站运营内容方案wordpress ftp 主机名
  • 东营做网站优化的公司中航建设集团网站
  • 如何更快的学习.net网站开发用凡科做的手机网站版
  • 请人做ppt的网站网上购物最实惠的网站