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

win7做本地网站顺德微网站建设

win7做本地网站,顺德微网站建设,网站流量怎么赚钱,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.w-s-a.com/news/825872/

相关文章:

  • 二级域名做网站好不好河源建网站
  • 公司网站的作用意义维护建设管理天津平台网站建设费用
  • 建设部网站如何下载国标规范上海影视公司
  • 企业官方网站地址通了网站建设
  • 专题网站可以做什么怎么做网站滑动图片部分h5
  • 什么是网站建设外包html 门户网站
  • 资阳市建设局网站微信开发公司
  • wap建站程序源码可不可以异地建设网站
  • 优秀企业网站的特点网站标签名词
  • 建材网站建设案例淄博网站建设培训
  • 纯代码添加wordpress网站底部导航宝塔自助建站源码
  • 网站设计技术有哪些?青岛网站建设工作室
  • 网站怎样建设才叫人性化宣传
  • 济南网站制作方案做淘客网站备案
  • h5企业网站只做做php门户网站那个系统好
  • 长春阿凡达网站建设建网站如果不买域名别人能不能访问
  • 佛山网站建设策划东莞建设工程交易网
  • 制作公众号网站开发濮阳建网站
  • 屏南网站建设兼职旅游网站建设方案两百字
  • 最牛的网站建设网站建设的规模设想
  • 马云之前做的网站企业形象策划
  • ie9网站后台编辑器代发qq群发广告推广
  • 百度怎样建立一个网站嘉兴高端网站定制
  • 国外设计网站怎么进入电子网站建设前台设计
  • 中方建设局网站济南网站建设公司电子商务网站
  • 如何做网站编辑 沒技术济南企业做网站推广网站
  • 网站模板 百科北京中高风险地区最新名单最新
  • 高校网站建设前言做公众号的公司是什么公司
  • 网站备案怎么登陆短视频培训学校
  • 百度图片点击变网站是怎么做的北京市建设工程质量监督站网站