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

晋江规划建设局网站石家庄房价

晋江规划建设局网站,石家庄房价,wordpress 多分类,网站设计公司圣辉友联文章目录 1、概念简介2、FeignClient整合Sentinel2.1、修改配置#xff0c;开启sentinel功能2.2、编写失败降级逻辑2.3、总结 3、线程隔离#xff08;舱壁模式#xff09;3.1、线程隔离的实现方式3.2、sentinel的线程隔离1#xff09;配置隔离规则2#xff09;Jmeter测试 … 文章目录 1、概念简介2、FeignClient整合Sentinel2.1、修改配置开启sentinel功能2.2、编写失败降级逻辑2.3、总结 3、线程隔离舱壁模式3.1、线程隔离的实现方式3.2、sentinel的线程隔离1配置隔离规则2Jmeter测试 3.3、总结 4、熔断降级4.1、慢调用1设置慢调用2设置熔断规则3测试 4.2、异常比例、异常数1设置异常请求2设置熔断规则3测试 作者介绍双非本科大三网络工程专业在读阿里云专家博主专注于Java领域学习擅长web应用开发、数据结构和算法初步涉猎Python人工智能开发和前端开发。 主页逐梦苍穹 所属专栏微服务 ✈ 您的一键三连是我创作的最大动力 1、概念简介 限流是一种预防措施虽然限流可以尽量避免因高并发而引起的服务故障但服务还会因为其它原因而故障。 而要将这些故障控制在一定范围避免雪崩就要靠**线程隔离舱壁模式和熔断降级手段了。 线程隔离之前讲到过调用者在调用服务提供者时给每个调用的请求分配独立线程池出现故障时最多消耗这个线程池内资源避免把调用者的所有资源耗尽。 熔断降级是在调用方这边加入断路器统计对服务提供者的调用如果调用的失败比例过高则熔断该业务不允许访问该服务的提供者了。 可以看到不管是线程隔离还是熔断降级都是对客户端**调用方的保护。需要在调用方 发起远程调用时做线程隔离、或者服务熔断。 而我们的微服务远程调用都是基于Feign来完成的因此我们需要将Feign与Sentinel整合在Feign里面实现线程隔离和服务熔断。 2、FeignClient整合Sentinel SpringCloud中微服务调用都是通过Feign来实现的因此做客户端保护必须整合Feign和Sentinel。 2.1、修改配置开启sentinel功能 修改OrderService的application.yml文件开启Feign的Sentinel功能 feign:sentinel:enabled: true # 开启feign对sentinel的支持2.2、编写失败降级逻辑 业务失败后不能直接报错而应该返回用户一个友好提示或者默认结果这个就是失败降级逻辑。 给FeignClient编写失败后的降级逻辑 ①方式一FallbackClass无法对远程调用的异常做处理 ②方式二FallbackFactory可以对远程调用的异常做处理我们选择这种 这里演示方式二的失败降级处理 步骤一在feing-api项目中定义类实现FallbackFactory 代码 package cn.xzl.feign.clients.fallback;import cn.xzl.feign.clients.UserClient; import cn.xzl.feign.pojo.User; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j;/*** author 逐梦苍穹* date 2024/4/24 11:35*/Slf4j public class UserClientFallbackFactory implements FallbackFactoryUserClient {Overridepublic UserClient create(Throwable throwable) {return new UserClient() {Overridepublic User findById(Long id) {log.error(查询用户异常, throwable);return new User();}};} }步骤二在feing-api项目中的DefaultFeignConfiguration类中将UserClientFallbackFactory注册为一个Bean Bean public UserClientFallbackFactory userClientFallbackFactory(){return new UserClientFallbackFactory(); }步骤三在feing-api项目中的UserClient接口中使用UserClientFallbackFactory import cn.xzl.feign.clients.fallback.UserClientFallbackFactory; import cn.xzl.feign.pojo.User; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable;FeignClient(value userservice, fallbackFactory UserClientFallbackFactory.class) public interface UserClient {GetMapping(/user/{id})User findById(PathVariable(id) Long id); }查看注解源码翻译过来如下 重启后访问一次订单查询业务然后查看sentinel控制台可以看到新的簇点链路 2.3、总结 Sentinel支持的雪崩解决方案 线程隔离仓壁模式 降级熔断 Feign整合Sentinel的步骤 在application.yml中配置feign.sentienl.enabletrue 给FeignClient编写FallbackFactory并注册为Bean 将FallbackFactory配置到FeignClient 3、线程隔离舱壁模式 3.1、线程隔离的实现方式 线程隔离有两种方式实现 线程池隔离信号量隔离Sentinel默认采用 如图 线程池隔离给每个服务调用业务分配一个线程池利用线程池本身实现隔离效果 信号量隔离不创建线程池而是计数器模式记录业务使用的线程数量达到信号量上限时禁止新的请求。 两者的优缺点 | | 信号量隔离 | 线程池隔离 | | — | — | — | | 优点 | 轻量级无额外开销 | 支持主动超时 支持异步调用 | | 缺点 | 不支持主动超时 不支持异步调用 | 线程的额外开销较大 | | 适用场景 | 高频调用、高扇出 | 低扇出 | 这里再解释两个概念即何为低扇出和高扇出 高扇出和低扇出是软件架构中常用的两个概念用来描述系统中组件之间的连接数量和复杂度。 高扇出High Fan-Out 定义高扇出指的是一个组件向多个其他组件发送消息、调用服务或传递数据的情况。换句话说一个组件与多个其他组件进行交互。 特点高扇出的系统通常具有许多连接、依赖和交互信息流动频繁组件之间的耦合度较高。 优点能够实现信息的广泛传播和共享提高系统的灵活性和可扩展性允许系统中的组件彼此之间进行相对独立的工作。 缺点可能导致系统的复杂性增加、维护困难、调试复杂增加了系统的耦合度和风险同时也会增加系统中的通信开销和延迟。 低扇出Low Fan-Out 定义低扇出指的是一个组件与少数其他组件之间的连接数量较少的情况。换句话说一个组件与少数其他组件进行交互。 特点低扇出的系统通常具有简单的连接关系组件之间的耦合度较低信息流动相对较少。 优点能够降低系统的复杂性提高系统的可维护性和可测试性降低系统中的耦合度和风险减少系统中的通信开销和延迟。 缺点可能导致信息流动不畅、信息共享不足系统的灵活性和可扩展性受到一定程度的限制某些功能可能无法实现。 在实际的软件设计和架构中通常需要根据系统的需求、性能要求、可维护性等因素来权衡选择高扇出还是低扇出。 一般来说应该尽量避免过度的高扇出或低扇出而是根据实际情况进行合理的设计和优化以实现系统的高效运行和良好的性能。 3.2、sentinel的线程隔离 用法说明 在添加限流规则时可以选择两种阈值类型 QPS就是每秒的请求数在快速入门中已经演示过线程数是该资源能使用用的tomcat线程数的最大值。也就是通过限制线程数量实现线程隔离舱壁模式。 案例需求给 order-service服务中的UserClient的查询用户接口设置流控规则线程数不能超过 2。然后利用jemeter测试。 1配置隔离规则 选择feign接口后面的流控按钮 填写表单 2Jmeter测试 选择《阈值类型-线程数2》 一次发生10个请求有较大概率并发线程数超过2而超出的请求会走之前定义的失败降级逻辑。 查看运行结果 发现虽然结果都是通过了不过部分请求得到的响应是降级返回的null信息。 3.3、总结 线程隔离的两种手段 信号量隔离 线程池隔离 信号量隔离的特点 基于计数器模式简单开销小 线程池隔离的特点 基于线程池模式有额外开销但隔离控制更强 4、熔断降级 熔断降级是解决雪崩问题的重要手段。 其思路是由断路器统计服务调用的异常比例、慢请求比例如果超出阈值则会熔断该服务。 即拦截访问该服务的一切请求而当服务恢复时断路器会放行访问该服务的请求。 断路器控制熔断和放行是通过状态机来完成的 状态机包括三个状态 closed关闭状态关闭断路器断路器放行所有请求并开始统计异常比例、慢请求比例。超过阈值则切换到open状态open打开状态服务调用被熔断访问被熔断服务的请求会被拒绝快速失败直接走降级逻辑。Open状态5秒后会进入half-open状态half-open半开状态放行一次请求根据执行结果来判断接下来的操作。 请求成功则切换到closed状态请求失败则切换到open状态 断路器熔断策略有三种慢调用、异常比例、异常数 4.1、慢调用 慢调用业务的响应时长RT大于指定时长的请求认定为慢调用请求。 在指定时间内如果请求数量超过设定的最小数量慢调用比例大于设定的阈值则触发熔断。 例如 解读RT超过500ms的调用是慢调用统计最近10000ms内的请求如果请求量超过10次并且慢调用比例不低于0.5则触发熔断熔断时长为5秒。然后进入half-open状态放行一次请求做测试。 案例 需求给 UserClient的查询用户接口设置降级规则慢调用的RT阈值为50ms统计时间为1秒最小请求数量为5失败阈值比例为0.4熔断时长为5 1设置慢调用 修改user-service中的/user/{id}这个接口的业务。通过休眠模拟一个延迟时间 此时orderId101的订单关联的是id为1的用户调用时长为60ms orderId102的订单关联的是id为2的用户调用时长为非常短 2设置熔断规则 下面给feign接口设置降级规则 规则 超过50ms的请求都会被认为是慢请求 3测试 在浏览器访问http://localhost:8088/order/101快速刷新5次可以发现 触发了熔断请求时长缩短至26ms快速失败了并且走降级逻辑返回的null 在浏览器访问http://localhost:8088/order/102竟然也被熔断了。 4.2、异常比例、异常数 异常比例或异常数统计指定时间内的调用如果调用次数超过指定请求数并且出现异常的比例达到设定的比例阈值或超过指定异常数则触发熔断。 例如一个异常比例设置 解读统计最近1000ms内的请求如果请求量超过10次并且异常比例不低于0.4则触发熔断。 一个异常数设置 解读统计最近1000ms内的请求如果请求量超过10次并且异常比例不低于2次则触发熔断。 案例 需求给 UserClient的查询用户接口设置降级规则统计时间为1秒最小请求数量为5失败阈值比例为0.4熔断时长为5s 1设置异常请求 首先修改user-service中的/user/{id}这个接口的业务。手动抛出异常以触发异常比例的熔断 也就是说id 为 2时就会触发异常 2设置熔断规则 下面给feign接口设置降级规则 规则 在5次请求中只要异常比例超过0.4也就是有2次以上的异常就会触发熔断。 3测试 在浏览器快速访问http://localhost:8088/order/102快速刷新5次触发熔断。 此时我们去访问本来应该正常的103也被熔断。
http://www.zqtcl.cn/news/721731/

相关文章:

  • 苏州企业建站公司网站建设属于广告费吗
  • 做网站找企业信息管理平台
  • 泉州企业制作网站网站建设竞价托管外包
  • 如何建立电子商务网站网站制作地点
  • 网站建设设计目的memcached wordpress
  • 潍坊作风建设年网站上海到北京火车时刻表查询
  • 网站建设 项目要求手机软件app
  • 什么是做网站wordpress 七牛视频
  • 家乡网站建设策划书angular做的网站
  • 土豆网网站开发源代码thinkphp5做的网站
  • lng企业自建站wordpress 分页 美化
  • 手机版网站如何做新闻类网站怎么做百度推广
  • 网站开发工程师 上海合肥网站到首页排名
  • 商城网站后续费用请人代做谷歌外贸网站
  • 汽车网站有哪些3d家装效果图制作软件
  • 荆门做网站公众号的公司网站百度不收录的原因
  • 专门做羽毛球的网站福州seo网站排名
  • 网站返回503的含义是门户网站开发合同
  • 自己做网站的成本要哪些东西wordpress模板如何管理系统
  • 做一般的网站要多久wordpress写文章页面无法显示
  • 人和兽做的网站视频汽车建设网站开发流程
  • 长春市建设工程造价管理协会网站厦门网站建设费用
  • 广东建设信息公开网站怎样策划一个营销型网站
  • 魔兽做图下载网站如何经营一个购物网站
  • 深圳做网站哪个平台好一级消防工程师考试题型
  • 网站婚礼服务态网站建设论文网站设计有限公司是干嘛的
  • 邯郸网站建设效果好广西做网站的公司
  • 网站logo上传营销型网站制作方案
  • 小说网站静态模板站长工具seo综合查询adc
  • 北京响应式网站做logo那个网站