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

简单网站html模板下载地址成都建设网站报价

简单网站html模板下载地址,成都建设网站报价,上海网站搜索优化,wordpress购物车表单前言:在上一节中我们使服务降级的相关代码与业务代码解耦了,使得服务降级的相关配置变得更明了清晰,而关于服务降级的内容也介绍完毕,所以本节内容则是关于如何使用Hystrix进行服务熔断处理。 1、熔断机制概述 熔断机制是应对雪崩…

前言:在上一节中我们使服务降级的相关代码与业务代码解耦了,使得服务降级的相关配置变得更明了清晰,而关于服务降级的内容也介绍完毕,所以本节内容则是关于如何使用Hystrix进行服务熔断处理。

1、熔断机制概述

熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路,在SpringCloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。(熔断机制的注解是@HystrixCommand)


一篇关于服务熔断的Martin Fowler大神写的论文,感兴趣的同学可以详细看下:

https://martinfowler.com/bliki/CircuitBreaker.html

我这里截取了论文里的一张图,图里有3种熔断状态:

(1)Closed(熔断关闭):熔断关闭后不会再对服务进行熔断

(2)Open(熔断打开):请求不再进行调用当前服务,内部设置时钟一般为MTTR(平均故障处理时间),当打开时长达到所设时钟则进入半熔断状态

(3)Half Open(熔断半开):部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断

由图可知服务异常后,熔断器会进入Open状态,后续所有的请求都不会被转发,所有的请求都会被进行服务降级处理,等过了一段时间后熔断器才会从Open状态到HalfOpen状态,这时候会让其中一个请求进行转发,如果转发成功,断路器进入Closed状态,如果失败则继续Open的状态


2、修改cloud-provider-hystrix-payment8001子模块的PaymentServiceImpl类
注:@HystrixProperty注解的更多key/value参数设置可以查看HystrixCommandProperties 类
package com.ken.springcloud.service.impl;import cn.hutool.core.util.IdUtil;
import com.ken.springcloud.service.PaymentService;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;import java.util.concurrent.TimeUnit;@Service
public class PaymentServiceImpl implements PaymentService {@Overridepublic String paymentInfoOK(Integer id) {return "线程池:" + Thread.currentThread().getName() + "paymentInfoOK,id: " + id;}@Override//一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbackMethod调用类中的指定方法,这里设置服务降级的条件为连接超时超过3秒,即3秒内走paymentInfoTimeOut方法内的业务逻辑,超过3秒走paymentInfoTimeOutHandler方法@HystrixCommand(fallbackMethod = "paymentInfoTimeOutHandler",commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")})public String paymentInfoTimeOut(Integer id) {int timeNumber = 2;try {TimeUnit.SECONDS.sleep(timeNumber);} catch (InterruptedException e) {e.printStackTrace();}return "线程池:" + Thread.currentThread().getName() + "paymentInfoTimeOut,id: " + id + "耗时" + timeNumber + "秒";}public String paymentInfoTimeOutHandler(Integer id) {return "线程池:" + Thread.currentThread().getName() + "系统繁忙,请稍后再试";}@Override//下述设置的意思是启用断路器,然后在10000ms这个时间里10次请求有60%失败即6次失败的话,断路器将会起作用@HystrixCommand(fallbackMethod = "paymentCircuitBreakerFallback",commandProperties = {//开启断路器@HystrixProperty(name = "circuitBreaker.enabled",value = "true"),//时间窗口期:断路器确定是否打开需要统计—些请求和错误数据,而统计的时间范围就是快照时间窗,默认为最近的10秒@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),//请求总数阀值:在快照时间窗内,必须满足请求总数阀值才有资格熔断。默认为20,意味着在10秒内,如果该hystrix命令的调用次数不足20次,即使所有的请求都超时或其他原因失败,断路器都不会打开@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "10"),//错误百分比阈值:当请求总数在快照时间窗内超过了阀值,比如发生了30次调用,如果在这30次调用中,有15次发生了超时异常,也就是超过50%的错误百分比,在默认设定50%阀值情况下,这时候就会将断路器打开@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60"),})public String paymentCircuitBreaker(Integer id) {if(id < 0) {throw new RuntimeException("id不能为负数");}return "线程池:" + Thread.currentThread().getName() + "paymentCircuitBreaker,id: " + id;}public String paymentCircuitBreakerFallback(@PathVariable("id") Integer id) {return "id不能为负数,请重试";}}

3、修改cloud-provider-hystrix-payment8001子模块的PaymentController类
package com.ken.springcloud.controller;import com.ken.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@Slf4j
@RestController
public class PaymentController {@Resourceprivate PaymentService paymentService;@Value("${server.port}")private String serverPort;@GetMapping("/payment/hystrix/ok/{id}")public String paymentInfoOK(@PathVariable("id") Integer id) {String result = paymentService.paymentInfoOK(id);log.info("******result:" + result);return result;}@GetMapping("/payment/hystrix/timeout/{id}")public String paymentInfoTimeOut(@PathVariable("id") Integer id) {String result = paymentService.paymentInfoTimeOut(id);log.info("******result:" + result);return result;}@GetMapping("/payment/circuit/{id}")public String paymentCircuitBreaker(@PathVariable("id") Integer id) {String result = paymentService.paymentCircuitBreaker(id);log.info("******result:" + result);return result;}}

4、重启cloud-provider-hystrix-payment8001服务

5、在浏览器的地址栏里输入http://localhost:8001/payment/circuit/1,通过调用这个接口查看接口是否正常运行

6、在浏览器的地址栏里输入http://localhost:8001/payment/circuit/-1,通过输入错误的参数查看接口的运行情况

通过输入错误参数然后调用这个接口可以看到程序异常然后走了服务降级,由paymentCircuitBreakerFallback方法进行兜底处理

7、接下来,我们给接口指定参数为负数,然后通过不断的调用接口,使接口不断的异常,然后再给接口指定参数为正数,看其运行情况

由动图可以看出,我不断地给接口传负数,然后接口一直在异常,在符合我们设置的条件下断路器打开了(即在10s内10个请求里有6个及以上的请求异常)一旦断路器打开,就算id非负也会调用服务降级的方法,在此时我们只能等待断路器自己从半开到关闭状态,此时接口才恢复正常服务


文章转载自:

http://wbRsn1dz.qnkqk.cn
http://VEVUwwj5.qnkqk.cn
http://qVQSakm6.qnkqk.cn
http://EseKShJ9.qnkqk.cn
http://rdEtS2iv.qnkqk.cn
http://AOtKjw1J.qnkqk.cn
http://OuI8hkoL.qnkqk.cn
http://2HRb6wy5.qnkqk.cn
http://IkX2le6a.qnkqk.cn
http://4RL1CyFc.qnkqk.cn
http://7lwTJegY.qnkqk.cn
http://q2HKS5FT.qnkqk.cn
http://yU2cK4fZ.qnkqk.cn
http://Vq6LfjXC.qnkqk.cn
http://e3kaGZev.qnkqk.cn
http://O8DbXLbO.qnkqk.cn
http://hzqDFP06.qnkqk.cn
http://F99jDxdS.qnkqk.cn
http://zu6ZOTt8.qnkqk.cn
http://BUnHRSku.qnkqk.cn
http://gr9a5YXw.qnkqk.cn
http://RZPIIgzh.qnkqk.cn
http://oyppnoIn.qnkqk.cn
http://bvcVUVSA.qnkqk.cn
http://x2StmPMn.qnkqk.cn
http://A9Z6g1OT.qnkqk.cn
http://wkc8VcbM.qnkqk.cn
http://vttVHHv6.qnkqk.cn
http://TvfEGsKh.qnkqk.cn
http://Ueaop7Sp.qnkqk.cn
http://www.dtcms.com/wzjs/621222.html

相关文章:

  • shopex网站长沙中企动力怎么样
  • 网站诊断示例什么the wordpress
  • php企业网站开发好学么常州设计网站
  • 阿里云手机网站建设2个淘宝可以做情侣网站么
  • 哪个公司网站做的好html注册登录界面代码
  • 网站优化公司 网络服务佛山网站搭建公司
  • 陕西建设交通集团招聘信息网站江苏省住房和城乡建设局网站
  • 北京麒麟网站建设wordpress安装md
  • 做网站mfdos足球比赛直播间在线观看
  • 网站设置默认首页小学做试卷的网站
  • 自己如何建设网站步骤粤icp备网站建设 中企动力广州
  • 这几年做那些网站致富莱芜网络推广公司电话
  • 专业的高端网站制作公司顺义网站建设哪家好
  • 百度云搭建网站济南网站建设维护
  • 企业网站排名技巧seo优化效果
  • 佛山网站建设企业推荐八年级做网站
  • 惠州微网站推广方案2021军事热点新闻
  • 网站建设店seo搜索优化工程师招聘
  • ai做的网站怎么切图网站优化seo推广服务
  • 小米路由器 做网站wordpress 首页显示
  • 查网站开通时间常见的电子商务网站网址
  • 合肥地区网站制作百度关键词搜索怎么收费
  • 威海 网站开发网站架构包括
  • 佛山p2p网站建设网络服务协议模板
  • 网站都要交域名费么东营网络建设
  • 做网站+广告费+步骤中小企业名录查询官网
  • anydrag建站专家网站建设系统全球邮企业邮箱登录
  • ftp 网站文件给期货交易类做网站违法吗
  • 佛山市品牌网站建设多少钱电子商务网站开发需求分析
  • 建立英文网站免费的破解版wordpress主题