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

网站怎么做动态图旅游网站设计规划书

网站怎么做动态图,旅游网站设计规划书,wordpress傻瓜建站教程,桐乡住房和建设局网站服务雪崩#xff1a;指在多个服务之间存在依赖关系时#xff0c;当一个服务发生故障或不可用时#xff0c;导致其他服务也无法正常工作的情况。这种现象通常是因为服务之间的依赖关系过于紧密#xff0c;当一个服务发生故障时#xff0c;其他服务无法正确处理该服务的请求…服务雪崩指在多个服务之间存在依赖关系时当一个服务发生故障或不可用时导致其他服务也无法正常工作的情况。这种现象通常是因为服务之间的依赖关系过于紧密当一个服务发生故障时其他服务无法正确处理该服务的请求或返回结果从而导致级联故障整个系统无法正常运行。所以有问题的节点快速熔断快速返回失败处理或者返回默认兜底数据【服务降级】。 “断路器”本身是一种开关装置当某个服务单元发生故障之后通过断路器的故障监控类似熔断保险丝向调用方返回一个符合预期的、可处理的备选响应(FallBack)而不是长时间的等待或者抛出调用方无法处理的异常这样就保证了服务调用方的线程不会被长时间、不必要地占用从而避免了故障在分布式系统中的蔓延乃至雪崩。 服务熔断服务熔断Circuit Breaker是一种用来控制服务间调用的一种机制目的是为了减少故障对系统的影响。当某个服务出现故障或者响应时间过长时熔断器会自动打开停止向该服务发送请求而是返回一个预设的错误响应。这样可以防止故障或响应缓慢的服务拖垮整个系统同时也可以快速失败减少用户的等待时间。 服务降级服务降级是指在系统负载过高或者出现异常情况下为了保证核心功能的稳定性和可用性暂时关闭一些非核心功能或者降低服务的质量以保证系统整体的稳定运行。服务降级可以通过调整系统配置参数、限流、降低并发请求等方式实现。 服务限流 服务限时 服务预热 接近实时的监控 兜底的处理动作 Circuit Breaker一种设计模式用于在分布式系统中处理故障和延迟。在分布式系统中服务之间通常会相互调用。当一个服务发生故障或延迟时调用链上的其他服务可能会受到影响导致整个系统出现级联故障。为了解决这个问题引入了Circuit Breaker模式。Circuit Breaker模式包含三个状态关闭、开启和半开。 Circuit Breaker是一套规范和接口真正落地实现的是Resilience4J Resilience4J是一个用于构建可靠和弹性应用程序的Java库。它提供了一套轻量级的容错模式和工具帮助开发人员更容易地实现应用程序的弹性。 需要Java17 //核心模块 resilience4j-circuitbreaker: 熔断 √ resilience4j-ratelimiter: 限流 √ resilience4j-bulkhead: 舱壁 √ resilience4j-retry: ⾃动重试 resilience4j-cache: 结果缓存 resilience4j-timelimiter: 超时处理1.熔断 熔断器有三种状态关闭状态正常状态、开启状态不允许通过和半开状态。 failure-rate-threshold 以百分比配置失败率峰值sliding-window-type 断路器的滑动窗口期类型 可以基于“次数”COUNT_BASED或者“时间”TIME_BASED进行熔断默认是COUNT_BASED。sliding-window-size 若COUNT_BASED则10次调用中有50%失败即5次打开熔断断路器 若为TIME_BASED则此时还有额外的两个设置属性含义为在N秒内sliding-window-size100%slow-call-rate-threshold的请求超过N秒slow-call-duration-threshold打开断路器。slowCallRateThreshold 以百分比的方式配置断路器把调用时间大于slowCallDurationThreshold的调用视为慢调用当慢调用比例大于等于峰值时断路器开启并进入服务降级。slowCallDurationThreshold 配置调用时间的峰值高于该峰值的视为慢调用。permitted-number-of-calls-in-half-open-state 运行断路器在HALF_OPEN状态下时进行N次调用如果故障或慢速调用仍然高于阈值断路器再次进入打开状态。minimum-number-of-calls 在每个滑动窗口期样本数配置断路器计算错误率或者慢调用率的最小调用数。比如设置为5意味着在计算故障率之前必须至少调用5次。如果只记录了4次即使4次都失败了断路器也不会进入到打开状态。wait-duration-in-open-state 从OPEN到HALF_OPEN状态需要等待的时间配置 滑动窗口类型 COUNT_BASED //在8001端口新增controller RestController public class PayCircuitController {//Resilience4j CircuitBreaker 的例子GetMapping(value /pay/circuit/{id})public String myCircuit(PathVariable(id) Integer id){if(id -4) throw new RuntimeException(----circuit id 不能负数);if(id 9999){try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) {e.printStackTrace(); }}return Hello, circuit! inputId: id \t IdUtil.simpleUUID();} }//在通用接口添加 /*** Resilience4j CircuitBreaker 的例子* param id* return*/GetMapping(value /pay/circuit/{id})public String myCircuit(PathVariable(id) Integer id);//在80端口pom文件新增依赖 !--resilience4j-circuitbreaker-- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-circuitbreaker-resilience4j/artifactId /dependency !-- 由于断路保护等需要AOP实现所以必须导入AOP包 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency//改yml文件 server:port: 80spring:application:name: cloud-consumer-openfeign-ordercloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #优先使用服务ip进行注册service-name: ${spring.application.name}openfeign:client:config:default:#连接超时时间connectTimeout: 3000 #3秒#读取超时时间readTimeout: 3000cloud-payment-service:#连接超时时间connectTimeout: 20000#读取超时时间readTimeout: 20000httpclient:hc5:enabled: truecompression:request:enabled: truemin-request-size: 2048 #最小触发压缩的大小mime-types: text/xml,application/xml,application/json #触发压缩数据类型response:enabled: true# 开启circuitbreaker和分组激活 spring.cloud.openfeign.circuitbreaker.enabledcircuitbreaker:enabled: truegroup:enabled: true #没开分组永远不用分组的配置。精确优先、分组次之(开了分组)、默认最后 # feign日志以什么级别监控哪个接口 OpenFeign内容 logging:level:com:dc:cloud:apis:PayFeignApi: debug# Resilience4j CircuitBreaker 按照次数COUNT_BASED 的例子 # 6次访问中当执行方法的失败率达到50%时CircuitBreaker将进入开启OPEN状态(保险丝跳闸断电)拒绝所有请求。 # 等待5秒后CircuitBreaker 将自动从开启OPEN状态过渡到半开HALF_OPEN状态允许一些请求通过以测试服务是否恢复正常。 # 如还是异常CircuitBreaker 将重新进入开启OPEN状态如正常将进入关闭CLOSE闭合状态恢复正常处理请求。 resilience4j:circuitbreaker:configs:default:failureRateThreshold: 50 #设置50%的调用失败时打开断路器超过失败请求百分⽐CircuitBreaker变为OPEN状态。slidingWindowType: COUNT_BASED # 滑动窗口的类型slidingWindowSize: 6 #滑动窗⼝的⼤⼩配置COUNT_BASED表示6个请求配置TIME_BASED表示6秒minimumNumberOfCalls: 6 #断路器计算失败率或慢调用率之前所需的最小样本(每个滑动窗口周期)。如果minimumNumberOfCalls为10则必须最少记录10个样本然后才能计算失败率。如果只记录了9次调用即使所有9次调用都失败断路器也不会开启。automaticTransitionFromOpenToHalfOpenEnabled: true # 是否启用自动从开启状态过渡到半开状态默认值为true。如果启用CircuitBreaker将自动从开启状态过渡到半开状态并允许一些请求通过以测试服务是否恢复正常waitDurationInOpenState: 5s #从OPEN到HALF_OPEN状态需要等待的时间permittedNumberOfCallsInHalfOpenState: 2 #半开状态允许的最大请求数默认值为10。在半开状态下CircuitBreaker将允许最多permittedNumberOfCallsInHalfOpenState个请求通过如果其中有任何一个请求失败CircuitBreaker将重新进入开启状态。recordExceptions:- java.lang.Exceptioninstances:cloud-payment-service:baseConfig: default//在80端口新增OrderCircuitController类 RestController public class OrderCircuitController {Resourceprivate PayFeignApi payFeignApi;GetMapping(value /feign/pay/circuit/{id})CircuitBreaker(name cloud-payment-service, fallbackMethod myCircuitFallback)public String myCircuitBreaker(PathVariable(id) Integer id){return payFeignApi.myCircuit(id);}//myCircuitFallback就是服务降级后的兜底处理方法public String myCircuitFallback(Integer id,Throwable t) {// 这里是容错处理逻辑返回备用结果return myCircuitFallback系统繁忙请稍后再试-----/(ㄒoㄒ)/~~;} } 滑动窗口类型 TIME_BASED //把之前的基于COUNT_BASED的yml配置注释掉注释掉改为新的yml配置 # Resilience4j CircuitBreaker 按照时间TIME_BASED 的例子 resilience4j:timelimiter:configs:default:timeout-duration: 10s #神坑的位置timelimiter 默认限制远程1s超于1s就超时异常配置了降级就走降级逻辑circuitbreaker:configs:default:failureRateThreshold: 50 #设置50%的调用失败时打开断路器超过失败请求百分⽐CircuitBreaker变为OPEN状态。slowCallDurationThreshold: 2s #慢调用时间阈值高于这个阈值的视为慢调用并增加慢调用比例。slowCallRateThreshold: 30 #慢调用百分比峰值断路器把调用时间⼤于slowCallDurationThreshold视为慢调用当慢调用比例高于阈值断路器打开并开启服务降级slidingWindowType: TIME_BASED # 滑动窗口的类型slidingWindowSize: 2 #滑动窗口的大小配置配置TIME_BASED表示2秒minimumNumberOfCalls: 2 #断路器计算失败率或慢调用率之前所需的最小样本(每个滑动窗口周期)。permittedNumberOfCallsInHalfOpenState: 2 #半开状态允许的最大请求数默认值为10。waitDurationInOpenState: 5s #从OPEN到HALF_OPEN状态需要等待的时间recordExceptions:- java.lang.Exceptioninstances:cloud-payment-service:baseConfig: default 2.舱壁隔离 Spring Cloud的舱壁隔离是一种微服务架构中的隔离机制用于防止服务之间的相互影响和故障扩散。舱壁隔离通过在不同的线程池或线程组中执行不同的服务实例将它们隔离开来。 Spring Cloud提供了两种常用的舱壁隔离实现方法线程池隔离 和 信号量隔离。 1.信号隔离 //PayCircuitController类中添加 //Resilience4j bulkhead 的例子 GetMapping(value /pay/bulkhead/{id}) public String myBulkhead(PathVariable(id) Integer id) {if(id -4) throw new RuntimeException(----bulkhead id 不能-4);if(id 9999){try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); }}return Hello, bulkhead! inputId: id \t IdUtil.simpleUUID(); }//在PayFeignApi接口新增方法 /*** Resilience4j Bulkhead 的例子* param id* return*/ GetMapping(value /pay/bulkhead/{id}) public String myBulkhead(PathVariable(id) Integer id);//在feign80端口新增依赖 !--resilience4j-bulkhead-- dependencygroupIdio.github.resilience4j/groupIdartifactIdresilience4j-bulkhead/artifactId /dependency//新增yml配置 ####resilience4j bulkhead 的例子 resilience4j:bulkhead:configs:default:maxConcurrentCalls: 2 # 隔离允许并发线程执行的最大数量maxWaitDuration: 1s # 当达到并发调用数量时新的线程的阻塞时间我只愿意等待1秒过时不候进舱壁兜底fallbackinstances:cloud-payment-service:baseConfig: defaulttimelimiter:configs:default:timeout-duration: 20s//在OrderCircuitController类新增方法 /***(船的)舱壁,隔离* param id* return*/ GetMapping(value /feign/pay/bulkhead/{id}) //Bulkhead.Type.SEMAPHORE类型 Bulkhead(name cloud-payment-service,fallbackMethod myBulkheadFallback,type Bulkhead.Type.SEMAPHORE) public String myBulkhead(PathVariable(id) Integer id) {return payFeignApi.myBulkhead(id); } public String myBulkheadFallback(Throwable t) {return myBulkheadFallback隔板超出最大数量限制系统繁忙请稍后再试-----/(ㄒoㄒ)/~~; }
http://www.hkea.cn/news/14466842/

相关文章:

  • wordpress仿站插件昆明购物网站建设
  • 网站有哪些布局郴州网站网络推广平台
  • 网站建设公司公司建一个公司网站多少钱
  • 网站查询ip地址查询长沙seo优化公司哪家好
  • 温州网站设计服务广东seo排名
  • 做外文网站wordpress suspected
  • 培训医院网站建设网站建设搭建环境
  • 上海做网站的公司电话wordpress 去掉左上角
  • 怎么将自己做的网站放到网上个人网站设计论文题目
  • 免费个人网站搭建完整网页开发
  • xp 做网站服务器吗wordpress数据库更改账号密码
  • 网站群 主要功能九江茶叶网站建设
  • 福州医保网站调入申报怎么做蝉知 wordpress
  • 关键词查网站网络营销项目策划书
  • 可以做微信公众号封面的网站网站服务器的功能
  • 做网站那些好公司注册资金最低是多少
  • 做网站素材google浏览器下载
  • 奉贤庄行网站建设网站的关键词排名怎么做
  • 蓝色网站素材母版页和窗体做网站例子
  • 常州网络公司中环互联网网站建设深圳动画制作
  • 门网站源码wordpress首页友情链接
  • win7用iis搭建网站网站群建设规范
  • 手机创建网站免费怎样做自己网站
  • 网站突然被降权wordpress评论自定义头像
  • 个人网页设计作品模板简单抑郁症上海优化网站排名
  • 除了阿里巴巴还有什么网站做外贸的南宁网站设计要多少钱
  • 织梦可以做淘宝客网站吗杭州网站建设价格
  • 汕头网站建设方案维护在线设计响应式网站
  • 提升网站权重吗蜜雪冰城网络营销推广方案
  • 论坛网站建设用工具软件seo基本概念